我正在尝试并行运行函数数组,当每个人都完成时我想要对该结果进行处理.
我正在使用承诺.现在,我可以将所有函数放在一个数组中并且可以执行
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中获取分组的promise.
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
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。