我不知道的 浏览器
事件循环:浏览器如何协调 JS 与渲染
很多人以为 setTimeout(fn, 0) 就是"立即执行",但实际上——它排在所有当前微任务之后,排在浏览器渲染之后,有时候甚至要等几毫秒。
浏览器, 事件循环 +2
// 共 3 篇文章
很多人以为 setTimeout(fn, 0) 就是"立即执行",但实际上——它排在所有当前微任务之后,排在浏览器渲染之后,有时候甚至要等几毫秒。
await 让函数"暂停",等 Promise 完成后"继续"——这个描述没错,但暂停是什么意思?主线程真的停下来等了吗?V8 用什么机制实现了"看似同步、实为异步"的执行模式?答案在 V8 把 async 函数转换成的状态机里,以及await 背后的微任务调度机制里。
"Promise 的 then 回调比 setTimeout 先执行"——大多数 JavaScript 开发者知道这个结论,但很少有人能说清楚为什么。这不是约定俗成的规则,而是 V8 内部有具体的执行机制在支撑:MicrotaskQueue 数据结构 + PerformMicr…