我不知道的 浏览器
事件循环:浏览器如何协调 JS 与渲染
很多人以为 setTimeout(fn, 0) 就是"立即执行",但实际上——它排在所有当前微任务之后,排在浏览器渲染之后,有时候甚至要等几毫秒。
浏览器, 事件循环 +2
// 共 4 篇文章
很多人以为 setTimeout(fn, 0) 就是"立即执行",但实际上——它排在所有当前微任务之后,排在浏览器渲染之后,有时候甚至要等几毫秒。
在 MutationObserver 出现之前,DOM 变化监听依赖 Mutation Events(如 DOMNodeInserted、DOMAttrModified)。这套 API 存在根本性的性能问题——每次 DOM 变化都同步触发事件,阻塞主线程,大量操作时性能灾难。M…
setTimeout(fn, 0) 的 fn 为什么不是"立即"执行,而是"稍后"执行?为什么两个延时相同的 setTimeout 之间还有顺序关系?这些问题的答案在 V8 的事件循环设计里,宏任务(Macrotasks)是这套设计的核心单元。
"Promise 的 then 回调比 setTimeout 先执行"——大多数 JavaScript 开发者知道这个结论,但很少有人能说清楚为什么。这不是约定俗成的规则,而是 V8 内部有具体的执行机制在支撑:MicrotaskQueue 数据结构 + PerformMicr…