javascript promise
原创小于 1 分钟
现有如下代码段,执行输出什么:
Promise.resolve().then(setTimeout(() => {
console.log(1)
}, 0))
Promise.resolve().then(_ => {
setTimeout(() => {
console.log(2)
}, 0)
})
setTimeout(() => {
console.log(3)
}, 0)
输出: 1 3 2
- 首先明确,
.then
或者.catch
的参数期望是函数,传入非函数则会发生值透传(value => value
) .then
参数是setTimeout
(注意:并不是一个函数),是立即执行的,所以console.log(1)
在下一个宏任务最先执行console.log(2)
是在当前宏任务之后的微任务才添加的,所以比console.log(3)
晚。