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