浏览器通过事件循环机制处理异步任务,宏任务(setTimeout/网络请求)和微任务(Promise)分开执行,微任务队列为空后才执行下一个宏任务。

论据/示例

事件循环执行顺序

1. 执行主线程同步代码
2. 执行所有微任务队列中的任务(直到队列为空)
3. 执行一个宏任务
4. 重复步骤 2-3

示例

console.log('1'); // 同步
 
setTimeout(() => console.log('2'), 0); // 宏任务
 
Promise.resolve().then(() => console.log('3')); // 微任务
 
console.log('4');
 
// 输出顺序:1 → 4 → 3 → 2

关联