并行解决承诺

时间:2019-10-21 07:11:42

标签: javascript node.js

如果我有一些承诺可以并行解决。我可以使用Promise.all()解决它们。但是,如果这些诺言内部也有诺言,该怎么办呢?它们会自动解决还是在Promise.all()之前我必须手动解决它们?

此外,首选哪种方法来解决承诺? 1.收集它们,然后使用Promise.all() 2.创建承诺并等待它们自己解决?

1 个答案:

答案 0 :(得分:0)

您可能需要分别解决父级中的每个promise,以确保Promise.all能够很好地实现。

例如,

const nestedAsyncChild = new Promise(resolve => resolve(someMethod));
const asyncChild = new Promise(resolve => resolve(nestedAsyncChild));

const parent1 = new Promise(resolve => resolve(asyncChild));
const parent2 = new Promise(resolve => resolve(asyncChild));
const parent3 = new Promise(resolve => resolve(asyncChild));

Promise.all([parent1, parent2, parent3])
.then(a => {
  console.log("Success");
})
.catch(() => {
  console.error("Error");
});

更新

如果某人对答案不满意,那么他们应该出于礼貌告诉别人为什么要这么做。将人们赶出答案板无济于事!