javascript promise
原创2021/6/10小于 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)晚。
