下面代码运行结果是多少
Promise.resolve().then(()=>{
console.log(0);
return Promise.resolve(3).then(()=>{
console.log('aa')
}).then(()=>{
console.log('bb')
return 4;
})
}).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 bb 3 5 4’,
‘1.每个then都会返回一个新的promise’,
‘2.当一个promise吸收一个thenable对象的时候(带有then方法,promise就是thenable),会在下一个微任务中调用它的then方法’,
‘先将代码翻译一下’,
const p1=Promise.resolve();
const p2=p1.then(()=>{
console.log(0);
const p9=Promise.resolve(3)
const p10=p9.then(()=>{
console.log('aa')
})
const p11=p10.then(()=>{
console.log('bb')
return 4;
})
return p11;
})
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 | p9.then 下一次执行p11.then方法(return p11) p5.then’,
‘aa 2 | p10.then p11.then(此时的p11没有完成,相当于给p11挂载了一个then方法) p6.then’,
‘bb 3 | p11.then(吸收4) p7.then’,
‘5 | p2.then’,
‘4’
更多前端面试题,微信搜索小程序【坤坤前端笔记】,随时刷题