我有三个或四个函数以以下方式返回promise:
function foo(){
return new Promise((resolve,reject) => {
//do some work
return resolve();
//some condition
return reject();
})
}
所以我拥有的是三个或四个foo类型的函数,假设我将这些函数添加到名为functionArray
的数组中,如下所示:
functionArray.push(foo1, foo2, foo3)
在这种情况下使用Promise.all
的方式是什么?我想实现这样的目标:
Promise.all(functionArray).then(() => {
console.log(done)
})
答案 0 :(得分:0)
您可以详细了解Promise.all
here。
Promise.all(iterable)方法返回一个Promise,当可迭代参数中的所有promise已解决或可迭代参数不包含promise时,它会解决。它以第一个承诺被拒绝的理由拒绝。
functionArray.push(foo(), foo1(), foo2())
Promise.all(functionArray).then((done)=>{
console.log(done)
})
//here functionArray is array of promises, and done is array of response from those promises in similar order.
您的函数foo
也不是一个承诺。返回foo()
是一个承诺。所以functionArray应该包含promises。
答案 1 :(得分:0)
Promise.all
采用Promises数组,而不是返回Promise的函数,functionArray.push(foo1(),foo2(),foo3())
将起作用。
还.then
回调将返回响应
Promise.all(functionArray).then((response)=>{
console.log('done' , response)
})