promise和settimeout执行先后的区别 promise.then和settimeout( 二 )
文章插图
B)调用堆栈执行 Promise.resolve(true).then(resolve)
并安排一个解决方案 。resolved()
文章插图
文章插图
C)promise 立即被解析,同时计时器也立即执行 。这样,定时器回调进入任务队列,回调
resolve()
进入作业队列文章插图
D)现在是有趣的部分:作业队列(微任务)优先级高于任务队列(宏任务) 。事件循环从作业队列中取出promise回调并将其放入调用堆栈中 。然后,调用堆栈执行promise回调:
文章插图
E)最后,事件循环将计时器回调从任务队列中出队到调用堆栈中 。然后,调用堆栈执行计时器回调:
文章插图
调用堆栈为空,已完成脚本的执行 。
总结
为什么立即解决的 promise 比立即执行定时器处理得更快?
由于事件循环优先级的存在,因此与任务队列(存储超时的回调)相比,作业队列(用于存储已实现的
Promise
回调)的优先级更高 。推荐阅读
- 唐朝品级最高的官?唐朝的官职名称和品级
- 手机系统天玑和骁龙哪个好 手机处理器天玑和骁龙哪个好-
- 船员|职场是一个复杂的地方,领导会有很多的个性和要求
- 山楂和菊花能一起泡水喝吗 山楂和菊花一起泡水喝可以减肥吗
- 小孩总是不听话和大人顶嘴怎么办
- 吊牌怎么区分材质,吊牌怎么区分材质和木质
- 花红片和千金片哪个好
- 不伤身体的壮阳药
- 宫炎平和千金片哪个好
- 千金片和三金片的区别