美文网首页
js的事件循环

js的事件循环

作者: may505 | 来源:发表于2021-02-27 15:55 被阅读0次

javascript是一个单线程语言,javascript分为同步机制及异步机制,其中同步机制是放在栈中,而异步机制是放在队列中,等到栈中的任务执行完后在去执行队列里面的任务。
javascript有一个main thread(主线程)和call-stack(调用栈),当在是call-stack中的任务时,遇到类似于settimeout这种异步的api后,会交由浏览器其它模块处理,然后异步时间到后,把异步需要处理的task放到队列中,当调用栈中的任务执行完后在去执行队列里面的task
举个例子

  console.log('1')
  setTimeout(()=>{
    console.log('2')
  })
  setTimeout(()=>{
    console.log('3')
  })
  console.log('4')

根据执行上下文开始进入到调用栈,首先遇到console.log('1'),然后在调用栈中执行改代码

image.png
当执行遇到setTimeout时,由于是异步函数,会把该异步task交由timer模块处理,当timer模块处理完后,把对应的函数放到task queue中等待
image.png
注意:call-stack把异步任务交由timer模块后立马执行新的上下文代码
image.png
image.png
当call-stack中的任务执行完成后,然后就去执行task queue里面的任务
所以页面最终的输出顺序为
console.log('1')
console.log('4')
console.log('2')
console.log('3')

相关文章

  • js事件循环

    js 是单线程的, js 的异步事件就是依赖于事件循环机制 事件循环 首先,我们来解释下事件循环是个什么东西: 就...

  • 2019-03-28

    JS 事件循环机制 - 任务队列、web API、JS主线程的相互协同 这篇文章的核心是分析js的事件循环,在此我...

  • Vue源码分析—响应式原理(四)

    nextTick JS 运行机制 JS 执行是单线程的,它是基于事件循环的。事件循环大致分为以下几个步骤: 所有同...

  • node 事件

    1、事件 1.1普通事件的使用 1.2、Node.js 的事件循环机制解析 1)Node 由事件循环开始,到事件循...

  • Js事件循环

    列表 JavaScript事件循环 测试金字塔 stub JavaScript事件循环理解 javaScript语...

  • js事件循环

    js是单线程的,那么是否代表参与js执行过程的线程只有一个? 答案:不是的,一共有4个线程参与该过程,但是永远只有...

  • js 事件循环

    先上代码 执行栈与事件队列 当javascript代码执行的时候会将不同的变量存于内存中的不同位置:堆(heap)...

  • js事件循环

    在js代码中,除了同步代码,就是异步代码,一个js文件是从上往下执行,遇到ajax,点击事件。settimeout...

  • JS事件循环

    深入理解javascript中的事件循环 (1)JS为何设计为单线程 js设计为单线程还是跟他的用途有关 试想一下...

  • JS事件循环

    之前在公众号发的一篇文章,在这里再发一次 先来看一道常见的面试题,请给出下面程序的打印顺序 单纯记住答案没有什么意...

网友评论

      本文标题:js的事件循环

      本文链接:https://www.haomeiwen.com/subject/hlcifltx.html