返回知识详解
JavaScript 核心

事件循环 Event Loop

调用栈、宏任务、微任务——理解 JS 单线程下异步代码的执行时机。

一轮事件循环

JS 是单线程的。同步代码在调用栈中执行;异步回调被放入任务队列。每轮事件循环:执行一个宏任务 → 清空所有微任务 → (可能)渲染 → 取下一个宏任务。

微任务(Promise.then、queueMicrotask)优先级高于宏任务(setTimeout、I/O)。点击「下一步」逐步推进,观察任务在调用栈、微任务队列、宏任务队列之间的流动。

可视化演示
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');
调用栈 Call Stack
微任务队列 Microtask
宏任务队列 Macrotask
控制台输出
步骤 1/9 准备执行:调用栈与各队列均为空。

亲手验证执行顺序

下面的代码混合了同步、宏任务、微任务。先在脑中推演输出顺序,再运行验证。

关键点:同步代码最先跑完;一个宏任务结束后会一次性清空全部微任务,才进入下一个宏任务。

可运行 Playground
加载交互编辑器…
学完了?做几道题巩固一下
针对「JavaScript 核心」范围练习