在 JavaScript 中,代码执行遵循 同步优先,异步靠后 的原则。具体执行顺序如下:
核心执行规则:
-
同步代码:立即在主线程执行(优先处理)
-
异步代码:
- 微任务(Microtask) :同步代码执行后立即执行(如
Promise.then
、async/await
) - 宏任务(Macrotask) :微任务执行后才执行(如
setTimeout
、setInterval
、DOM 事件)
- 微任务(Microtask) :同步代码执行后立即执行(如
完整执行流程:

示例代码分析:
javascript
console.log("1"); // 同步
setTimeout(() => console.log("2"), 0); // 宏任务
Promise.resolve()
.then(() => console.log("3")); // 微任务
console.log("4"); // 同步
输出顺序:
1 → 4 → 3 → 2

特殊场景说明:
async/await
本质 :await
之前的代码同步执行,await
之后的代码相当于.then()
(微任务)
javascript
async function demo() {
console.log("A"); // 同步
await Promise.resolve();
console.log("B"); // 微任务
}
总结执行顺序:
同步代码 → 微任务队列(全部清空)→ 宏任务队列(每次取一个)→ 微任务队列(再次检查)→ ...循环
掌握这一机制能有效解决异步陷阱。