如何合并多个异步操作的结果
使用 promise.all() 可以并行执行多个 promise,并在所有任务完成后返回一个包含所有结果的数组。如果其中任何一个 promise 被拒绝,整个 promise.all() 就会立即失败。这种方法适用于需要确保所有数据都成功获取的场景。

const p1 = new Promise(resolve => setTimeout(() => resolve(1), 100));
const p2 = new Promise(resolve => setTimeout(() => resolve(2), 200));
Promise.all([p1, p2]).then(results => {
console.log(results); // [1, 2]
});上述代码展示了两个异步操作并行执行,最终结果按顺序组合成数组 [1, 2]。
如何处理异步操作中的部分失败并过滤无效结果
当某些异步操作可能失败且你希望忽略这些错误时,可以使用 Promise.allSettled()。它会等待所有 Promise 完成(无论成功或失败),并返回一个描述每个 Promise 状态的数组。你可以遍历这个数组,筛选出状态为 fulfilled 的项,从而实现对有效结果的过滤。

你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
立即学习“Java免费学习笔记(深入)”;
const p1 = Promise.resolve(1);
const p2 = Promise.reject(new Error('Failed'));
const p3 = Promise.resolve(3);
Promise.allSettled([p1, p2, p3]).then(results => {
const validResults = results
.filter(r => r.status === 'fulfilled')
.map(r => r.value);
console.log(validResults); // [1, 3]
});在这个例子中,尽管 p2 失败了,但 Promise.allSettled() 依然会等待所有任务结束,并通过过滤逻辑只保留成功的值。
基于输入条件动态调整合并策略
在实际开发中,你可能需要根据输入数据的特性来决定是使用 Promise.all() 还是 Promise.allSettled()。例如,如果输入列表中包含可能经常失败的请求,使用 allSettled 能避免整体流程中断;而如果业务逻辑要求必须全部成功才能继续,则应使用 all。这种选择直接影响了程序的健壮性和用户体验。

















