当前位置: 代码迷 >> 综合 >> Event Loop 事件循环
  详细解决方案

Event Loop 事件循环

热度:3   发布时间:2024-03-08 17:07:24.0

事件循环:

1.同步任务在主线程上执行,形成一个执行栈

2.除了主线程之外,还存在一个 任务队列,一旦异步任务有了结果,就把异步任务的回调函数放入任务队列里。

3.当主线程所有同步任务执行完毕后,就会去读取任务队列的函数,并在主线程中执行

4.主线程不断循环第三步

异步任务有微任务和宏任务之分,主线程会优先读取任务队列中的宏任务。

微任务:promise,process.nextTick,其中process.nextTick无视书写顺序,主线程会优先读取任务队列中的process.nextTick.

宏任务:setTimeOut(),setInterval()

除此之外,由于async是promise的语法糖,因此 async 函数await下面的代码也属于微任务。

顺便说下,当碰到setTimeOut时候,把回调函数放到任务队列里的时候,计时器已经开始计时了,一旦前面任务队列计时器前面没有任务,则到时间回调函数开始计时,如果计时器的回调函数前面任务队列还处理事务,会导致计时器不准。

  相关解决方案