Javascript 在一个异步函数中等待多个承诺

Javascript 在一个异步函数中等待多个承诺,javascript,async-await,ecmascript-next,Javascript,Async Await,Ecmascript Next,我试图利用es7异步功能,即 async function stepVerifyIdentity(nextState, replace, callback) { const val1 = await promise1('Param1') const val2 = await promise2('Param2') const val3 = await promise3('Param3') if (!val1 && (!val2 || !val3))

我试图利用es7异步功能,即

async function stepVerifyIdentity(nextState, replace, callback) {
    const val1 = await promise1('Param1')
    const val2 = await promise2('Param2')
    const val3 = await promise3('Param3')
    if (!val1 && (!val2 || !val3)) {
        console.log('Do something')
    } 
}

这里,所有promise*函数都进行ajax调用并返回
true
false
如果ajax响应满足传递的参数,我相信我不能连续使用3次等待,因此需要一种方法来等待所有这些调用以某种方式返回它们的值。

您可以使用
wait
任意次数,因此,您的示例将满足您的要求

但是,也许你会考虑<代码>承诺。所有< /代码>更漂亮:

async function stepVerifyIdentity(nextState, replace, callback) {
  const [ val1, val2, val3 ] = await Promise.all([
    promise1('Param1'),
    promise2('Param2'),
    promise3('Param3')
  ])

  if (!val1 && (!val2 || !val3)) {
    console.log('Do something')
  } 
}

我也有类似的问题。也许这对你有帮助。在我的例子中,我使用的是jquery承诺@求救
Promise.all
看起来很有希望(不是双关语)我对es7不是100%熟悉,但Promise.all?“我相信我不能连续使用3个等待”-当然可以,你认为这有什么问题?(尽管你)这还有一个好处,那就是所有三个请求都是并行完成的,而不是一个接一个地完成。