下面代码运行结果是多少
const b={
then(resolve){
console.log('aa')
resolve(4)
}
}
Promise.resolve().then(()=>{
console.log(0);
return b;
}).then((res)=>{
console.log(res);
})
Promise.resolve().then(()=>{
console.log(1)
}).then(()=>{
console.log(2)
}).then(()=>{
console.log(3)
}).then(()=>{
console.log(5)
})
答案:‘0 1 aa 2 4 3 5’,
‘当一个promise吸收一个thenable对象的时候(带有then方法),会在下一个微任务中调用它的then方法’,
‘先将代码翻译一下’,
const b={
then(resolve){
console.log('aa')
resolve(4)
}
}
const p1=Promise.resolve()
const p2=p1.then(()=>{
console.log(0);
return b;
})
const p3=p2.then((res)=>{
console.log(res);
})
const p4=Promise.resolve()
const p5=p4.then(()=>{
console.log(1)
})
const p6=p5.then(()=>{
console.log(2)
})
const p7=p6.then(()=>{
console.log(3)
})
const p8=p7.then(()=>{
console.log(5)
})
‘控制台|微任务’,
’ | p1.then p4.then’,
‘0 1 | 下一次执行b.then方法(return b) p5.then’,
‘aa 2 | p2.then p6.then’,
‘4 3 | p7.then’,
‘5’
更多前端笔记,微信搜索小程序【坤坤前端笔记】,随时刷题