返回知识详解
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
加载交互编辑器…