如何对promises数组进行promise.all?

我正在尝试并行运行功能数组,当每个人都完成时,我想要处理该结果。我正在使用诺言。现在,我可以将所有函数放在一个数组中,并可以执行Promise.all(函数数组),但是我有一个像

[[promise1, promise2], [promise3,promise4], [promise5,promise6]],

每个承诺都是承诺的功能。Promise参考文档说Promise.all中的参数应该是一个可迭代的对象,而我的数组是可迭代的。但这对我不起作用。我认为它正在执行[promise1,promise2]作为一个承诺,而不是个人的承诺。

谁能帮我实现目标,或者有更好的方法吗?

回答:

您还需要调用Promise.all每个数组项:

const promise4all = Promise.all(

promiseArray.map(function(innerPromiseArray) {

return Promise.all(innerPromiseArray);

})

);

或直接:

// Fix: Promise.all.bind is required because it seems like Promise.all

// implementation relies on "this"

const promise4All = Promise.all(promiseArray.map(Promise.all.bind(Promise)))

// or

// const promise4All = Promise.all(promiseArray.map(p => Promise.all(p)))

这样,外部人Promise.all就可以在其他人中获得分组的承诺Promise.all

promise4all.then(function(promiseGroupResult) {

// promiseGroupResult is the actual result of each promise group

// and you'll be able to get each result this way: promiseGroupResult.somePropertyName

});

以上是 如何对promises数组进行promise.all? 的全部内容, 来源链接: utcz.com/qa/433197.html

回到顶部