![[不失礼貌的微笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_16.9d17f6d.png)
#每天一个知识点# 很多人以为 setTimeout(fn, 0) 是「立刻执行」,其实它只是把回调推入宏任务队列,要等当前同步代码和所有微任务(Promise、queueMicrotask)跑完才轮到它。
所以即便延迟写 0,回调也永远排在微任务之后。所谓「0 毫秒」指的是「最早下一轮宏任务」,不是「马上」。需要抢先执行时,用 queueMicrotask 比 setTimeout 更准。
所以即便延迟写 0,回调也永远排在微任务之后。所谓「0 毫秒」指的是「最早下一轮宏任务」,不是「马上」。需要抢先执行时,用 queueMicrotask 比 setTimeout 更准。
展开
1
2