congxine笔记
ONLINE
返回科普
KNOWLEDGE / NOTE

事件循环

MDN · 站内原创整理

JavaScript 通过任务队列和微任务队列协调异步工作,理解执行顺序才能正确判断 UI 更新时机。

核心说明

浏览器中的 JavaScript 任务不是简单排队执行。同步代码先运行,当前任务结束后清空微任务队列,再进入下一个宏任务,浏览器才有机会进行渲染。

关键点

  • Promise.then 属于微任务,setTimeout 回调属于宏任务。
  • 连续创建大量微任务会推迟渲染和用户输入响应。
  • 遇到异步顺序问题时,把日志分别放在同步代码、微任务和定时器中验证。
console.log(1)
queueMicrotask(() => console.log(2))
setTimeout(() => console.log(3))
console.log(4) // 1, 4, 2, 3