如何优雅地改变打字稿中并行的长链式承诺?



原始代码是这样的:

new Promise<void>((resolve) => {
resolve();
})
.then(() => {
return 1;
})
.then((res1) => {
return res1 + 1;
})
.then((res2) => {
return res2 + 1
})
.then((res3) => {
return res3 + 1
})
.
.then((sum) => {
console.log("I am the end! the sum is " + sum);
})

但是代码越来越长,所以我想使用Promise.all();所以程序应该是:

  1. 初始化
  2. 并行执行所有计算(序列无关紧要(
  3. 在最后总结它们

如何正确实现这一目标?我能否使每个阶段作为独立函数更具可读性?

如果我使用Promise.all(),我必须传递一系列承诺吗?

这是一种方法,使用Promise.all()等待所有计算计算,然后使用Array.reduce()将所有结果相加,直到总和。


const originalPromise = new Promise(resolve => resolve());
const firstCalculation = new Promise(resolve => resolve(1));
const secondCalculation = new Promise(resolve => resolve(2));
const thirdCalculation = new Promise(resolve => resolve(3));
const fourthCalculation = new Promise(resolve => resolve(4));
Promise.all([
firstCalculation,
secondCalculation,
thirdCalculation,
fourthCalculation
]).then(results => {
const sum = results.reduce((acc, current) => acc += current, 0);
console.log(`The sum is ${sum}`);
});

最新更新