js中的微任务与宏任务
·318 字·2 分钟阅读
js
微任务
-
Promise callbacks:包括.then, .catch, 和 .finally的回调函数。 -
async/await:当使用await关键字等待一个Promise时,后续的代码作为微任务执行。 -
MutationObserver:用于监视DOM树的变化,其回调函数作为微任务执行。 -
queueMicrotask:在某些环境中(如Node.js),这是一个直接将函数放入微任务队列的方法。 -
process.nextTick(Node.js环境): 虽然不直接属于ES规范中的微任务,但它具有类似的行为,常用于Node.js中立即执行的回调。
宏任务
-
setTimeout 和 setInterval:用于延迟或周期性执行代码。 -
setImmediate(Node.js环境):提供了一个比setTimeout(0)更快的执行方式,用于在I/O循环的下一次迭代开始时执行。 -
I/O:如文件读写等操作通常作为宏任务调度。 -
UI Rendering:浏览器中的渲染任务,如对DOM的修改触发的重绘和回流。 -
Event Loop Iteration:每次事件循环的迭代本身也可以视为一个宏任务。 -
requestAnimationFrame:用于在下一次浏览器重绘之前执行回调,常用于动画和高性能UI更新。 -
script:整体的JavaScript脚本执行也是一个宏任务。