JavaScript微任务队列由引擎内部维护,开发者无法直接操作,但可通过三种标准方式调度:Promise链式回调、queueMicrotask()函数(ES2020+)和MutationObserver回调;Node.js的process.nextTick()不属于标准微任务。

JavaScript 微任务队列本身是引擎内部维护的,开发者不能直接访问或操作它(比如没有 microtaskQueue.push() 或 clearMicrotasks() 这样的 API)。但你可以通过明确的、规范定义的机制来调度任务进入微任务队列。目前主流且标准的方式有以下三种:
Promise.prototype.then()/.catch()/.finally()的回调函数
Promise 的状态变化(fulfilled 或 rejected)后,其链式回调会被加入微任务队列。注意:Promise 构造函数内的执行器(executor)是同步运行的,只有then等注册的回调才是微任务。-
queueMicrotask()函数(ES2020+)
这是专为插入微任务设计的轻量级 API,语义清晰、无额外开销。它接收一个函数,该函数会在当前同步代码结束后、下一个宏任务开始前执行。
示例:console.log('同步'); queueMicrotask(() => console.log('微任务')); console.log('继续同步'); // 输出:同步 → 继续同步 → 微任务 MutationObserver的回调
当监听的 DOM 变更发生时,其回调会作为微任务执行。常用于响应式框架或需要精确控制 DOM 更新时机的场景。
另外,在 Node.js 环境中还有 process.nextTick(),但它属于 Node 特有机制,不属于浏览器标准微任务,且优先级高于 Promise 回调(在事件循环的“当前操作完成前”就执行),因此不建议与浏览器端混用或当作通用微任务手段。
注意:async/await 本身不是独立 API,而是 Promise 语法糖;await 后面的代码等价于 .then() 回调,所以也归入 Promise 微任务范畴。
而 setTimeout、setInterval、requestAnimationFrame、fetch 回调、事件监听器等,都属于宏任务,不会进入微任务队列。
这些就是目前 JavaScript 标准中能可靠触发微任务的全部方式。


















