在一个异步函数中等待多个承诺
Awaiting several promises in one async function
我正在尝试利用 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 并且 return true
或 false
如果传递的参数满足 ajax 响应,我相信我不能连续使用 3 个等待,因此需要一种方法来等待所有这些调用以某种方式 return 它们的值。
您可以根据需要多次使用 await
,因此您的示例会按照您的要求执行。
但是,也许您会认为 Promise.all
更漂亮:
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')
}
}
我正在尝试利用 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 并且 return true
或 false
如果传递的参数满足 ajax 响应,我相信我不能连续使用 3 个等待,因此需要一种方法来等待所有这些调用以某种方式 return 它们的值。
您可以根据需要多次使用 await
,因此您的示例会按照您的要求执行。
但是,也许您会认为 Promise.all
更漂亮:
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')
}
}