首页 > 试题广场 >

下面代码大输出顺序是 setTimeout(() = {

[单选题]
下面代码大输出顺序是
setTimeout(() => {
console.log(1)
}, 0)

const P = new Promise((resolve, reject) => {
console.log(2)
setTimeout(() => {
resolve()
console.log(3)
}, 0)
})

P.then(() => {
console.log(4)
})
console.log(5)
  • 2 1 3 4 5
  • 5 2 1 3 4
  • 5 1 2 3 4
  • 2 5 1 3 4
考查事件循环:
宏任务->微任务->宏任务
一开始的同步代码就是第一个宏任务。
这里的注意点在于promise中的then只有在state=resolved的情况下才执行。
所以第一个宏任务结束后还没有resolved,微任务不执行,等到第二轮宏任务执行结束后才执行then。
所以是2 5 1 3 4
发表于 2021-06-23 14:29:36 回复(0)