嵌套承诺解析方法

时间:2018-10-08 19:30:05

标签: javascript es6-promise

在下面的代码中,当我调用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)

  })
}

1 个答案:

答案 0 :(得分:0)

您以另一个承诺func2解决otherfunc(),因此func2恰好在3秒后解决,然后调用otherfunc也在3秒后解决。您在console.log语句中看到的结果显示为43,因为.then()将等待所有诺言完成。