微任务
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脚本执行也是一个宏任务。