2026-10-22 10:21:46
在 JavaScript 中,手动触发宏任务的核心方法是利用 setTimeout、MessageChannel 或 requestAnimationFrame 等 API,将回调函数放入宏任务队列,等待当前任务执行完毕后处理。以下是具体实现方式及适用场景:

通用性最强,兼容所有浏览器。
实际最小延迟可能为 4ms(受浏览器限制)。

性能更高:在某些浏览器中比 setTimeout 更高效。
兼容性略差:需注意浏览器支持情况。
适合动画:与渲染周期同步,避免丢帧。
非精确延迟:执行时机依赖浏览器重绘周期。

示例:解析大型 JSON 文件时,用 setTimeout 分段处理,防止页面卡顿。
包括:setTimeout、setInterval、I/O、UI 渲染、MessageChannel、requestAnimationFrame。
事件循环中每次仅执行一个宏任务,然后清空微任务队列。
包括:Promise.then、MutationObserver、process.nextTick(Node.js)。
在当前宏任务执行完毕后立即执行,优先级高于宏任务。
执行一个宏任务。
清空微任务队列。
更新渲染。
重复上述步骤。
理解宏任务与微任务的差异及触发方式,是编写高效 JavaScript 代码的关键。