38. 宏任务和微任务
分析
回忆
JavaScript
的事件循环机制。JavaScript
是单线程的,事件循环处理任务队列,其中分为宏任务
和微任务
。常见的宏任务
包括setTimeout
、setInterval
、I/O
操作、UI
渲染等,而微任务
包括Promise
的then/catch/finally
方法、process.nextTick
(Node.js 环境)等
代码的执行顺序通常是:同步代码 → 微任务 → 宏任务
setTimeout(function () {
console.log(1);
}, 0);
new Promise(function executor(resolve) {
console.log(2);
for (var i = 0; i < 10000; i++) {
// resolve() 不会中断同步代码:
i === 9999 && resolve();
}
console.log(3);
}).then(function () {
console.log(4);
});
console.log(5);
// 输出:2 3 5 4 1