事件循环机制从整体上告诉了我们 JavaScript 代码的执行顺序​​Event Loop​​​即事件循环,是指浏览器或​​Node​​​的一种解决​​javaScript​​单线程运行时不会阻塞的一种机制,也就是我们经常使用​异步​的原理。

先执行宏任务队列,然后执行微任务队列,然后开始下一轮事件循环,继续先执行宏任务队列,再执行微任务队列。

  • 宏任务:script/setTimeout/setInterval/setImmediate/ I/O / UI Rendering

  • 微任务:process.nextTick()/Promise

上诉的 setTimeout 和 setInterval 等都是任务源,真正进入任务队列的是他们分发的任务。

优先级

  • setTimeout = setInterval 一个队列

  • setTimeout > setImmediate

  • process.nextTick > Promise

for (const macroTask of macroTaskQueue) {  
handleMacroTask();
for (const microTask of microTaskQueue) {
handleMicroTask(microTask);
}
}