宏任务:setInterval, setTimeout, setImmediate, I/O 微任务:Promise.then Promise.catch Promise.finally, process.nextTick

微任务与宏任务的区别


1. 微任务的回调函数被放置在微任务队列中,宏任务的回调函数被放置在宏任务队列中。 2. 微任务优先级高于宏任务。 当微任务事件队列中存在可以执行的回调函数时,事件循环在执行完当前阶段的回调函数后会暂停进入事件循环的下一个阶段,事件循环会立即进入微任务的事件队列中开始执行回调函数,当微任务队列中的回调函数执行完成后,事件循环再进入到下一个阶段开始执行回调函数。

nextTick 的优先级高于 microTask,在执行任务时,只有 nextTick 中的所有回调函数执行完成后才会开始执行 microTask

不同阶段的宏任务的回调函数被放置在了不同的宏任务队列中,宏任务与宏任务之间没有优先级的概念,他们的执行顺序是按照事件循环的阶段顺序进行的。