JavaScript 事件循环里 Promise 回调不一定比 setTimeout 先执行?聊聊任务队列的真实行为
写 JavaScript 的时候经常听到一个说法:Promise 回调是微任务,setTimeout 是宏任务,所以 Promise 一定比 setTimeout 先执行。这个说法在大多数场景下成立,但它掩盖了一个更容易踩坑的细节:DOM 事件、渲染步骤、多个宏任务源之间的调度顺序,以及 Node.js 和浏览器之间的差异。实际开发里,比如你在 React 的 effect 里同时触发状态更新和定时器、或者在 Node 服务里用 process.nextTick 和 Promise 混着写,就很容易遇到&l...