以下语句会如何输出?
结果:打印 start promise end then1 then2 setTimeout
原因:简单来说,JS 代码的执行顺序为:同步代码⇒异步代码(微任务⇒宏任务)
分析:
-
打印 start
-
setTimeout 加入消息队列
-
new Promise 的同步部分执行,打印 promise,then 部分加入消息队列
-
打印 end
-
消息队列中先处理微任务 then 的部分,打印 then1,then2
-
消息队列处理宏任务 setTimeout,打印 setTimeout