node的“宏任务(macro-task)”和“微任务(micro-task)”机制

macrotask 和 microtask 表示异步任务的两种分类。在挂起任务时,JS 引擎会将所有任务按照类别分到这两个队列中,首先在 macrotask 的队列(这个队列也被叫做 task queue)中取出第一个任务,执行完毕后取出 microtask 队列中的所有任务顺序执行;之后再取 macrotask 任务,周而复始,直至两个队列的任务都取完。

两个类别的具体分类如下:

  • macro-task: script(整体代码), setTimeoutsetIntervalsetImmediate, I/O, UI rendering
  • micro-task: process.nextTickPromises(这里指浏览器实现的原生 Promise),Object.observeMutationObserver

详见 stackoverflow 解答 或 这篇博客

原文地址:https://www.cnblogs.com/feng524822/p/4976887.html