【发布时间】:2017-09-10 03:11:33
【问题描述】:
我有一个 Promise.all,它执行映射到数组输入的异步函数(如果它不为空),然后将数据解析为先前定义的 Promise:
Promise.all((inputs || []).map(input => {
return new Promise((resolve, reject) => {
someAsyncFunc(input)
.then(intermediateOutput => {
someOtherAsyncFunc(intermediateOutput )
.then(output => {
return Promise.resolve(output )
})
.catch(reason=> {
return Promise.reject(reason)
})
})
.catch(reason => {
return Promise.reject(reason);
})
})
.then(outputs => {
resolve(outputs)
})
.catch(reason => {
reject(reason)
})
}))
在 someAsyncFunc 完成其工作之前,我只会得到空输出。如何让 Promise.all 等待里面的 Promise 完成它们的异步工作?
【问题讨论】:
-
您对
Promise.all()的工作方式感到非常困惑。它不接受你在第一行代码中声明的回调。它接受一系列承诺。 -
return Promise.all(inputs.map(someAsyncFunc));可能是您要找的? -
@Arthur,是的,但实际上我在 someAsyncFunc 之后还有另一个函数要调用。我将编辑我的代码以显示这一点
标签: javascript promise es6-promise