在下面的代码中,当我调用func时,我会得到一个承诺,该承诺在3秒钟后分解为另一个承诺。然后,嵌套的承诺在另外3秒钟后解析为数字43。我的问题是,为什么console.log在6秒后返回res:43而不是3秒后未解决的承诺。我然后是func2,但我从没有以后。otherFunc
async function func(){
const val = func2().then((other)=>{console.log("res:"+other)})
}
async function func2(){
return new Promise(resolve => {
setTimeout(()=>resolve(otherfunc()),3000)
})
}
async function otherfunc(){
return new Promise(resolve => {
setTimeout(()=>resolve(43),3000)
})
}
答案 0 :(得分:0)
您以另一个承诺func2
解决otherfunc()
,因此func2
恰好在3秒后解决,然后调用otherfunc
也在3秒后解决。您在console.log
语句中看到的结果显示为43,因为.then()
将等待所有诺言完成。