JavaScript 事件循环:从“什么?”到“原来如此!”的深度解析
来源:dev.to — Jul 25-26
📋 概述
用类比、时序图和零复杂术语重新诠释 JavaScript 事件循环的全貌。从调用栈、任务队列(宏任务)到微任务队列,逐层揭示为什么 setTimeout(fn, 0) 不立即执行、Promise 回调为什么比 setTimeout 先触发、以及 requestAnimationFrame 在事件循环中的精确位置。
🔑 核心要点
- 事件循环的核心是三个队列的优先级:调用栈(立即执行)> 微任务队列(Promise/.then)> 宏任务队列(setTimeout/setInterval)。
- Promise 回调快于 setTimeout的根本原因:微任务在每个宏任务结束后、下一个宏任务开始前清空——它们在“循环间隙”中插队。
- requestAnimationFrame 位于特殊位置:在渲染之前执行,适合做视觉更新,避免掉帧。
💡 金句
事件循环不是魔法——它只是一个一直运行的 while 循环,依次检查调用栈、微任务、宏任务,永不停歇。
👍 0
👎 0
← 返回 Dev.to 首页