在这种情况下如何使用promise.all?

时间:2018-12-27 11:31:00

标签: javascript node.js es6-promise

我有三个或四个函数以以下方式返回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)
})

2 个答案:

答案 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)
})