原始代码是这样的:
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()
;所以程序应该是:
- 初始化
- 并行执行所有计算(序列无关紧要(
- 在最后总结它们
如何正确实现这一目标?我能否使每个阶段作为独立函数更具可读性?
如果我使用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}`);
});