使用 promise.all() 可以实现异步操作的并发映射,它接收一个包含多个 promise 的数组作为输入,并返回一个新的 promise,该 promise 在所有输入 promise 都成功解决后,以数组形式返回所有结果。如果其中任何一个 promise 被拒绝,整个操作将立即失败并抛出错误。

Promise.all() 如何处理空数组
Promise.all() 在接收到空数组时,会立即返回一个已解决的 Promise,其值为空数组。这意味着无需进行额外的空值检查即可安全调用该方法。

const result = await Promise.all([]); console.log(result); // []
Promise.allSettled() 如何隔离单个任务失败
当需要确保所有任务都执行完毕,且单个任务的失败不影响其他任务的结果收集时,应使用 Promise.allSettled()。它会等待所有 Promise 完成(无论成功或失败),并返回一个包含每个 Promise 状态和值的数组。
立即学习“Java免费学习笔记(深入)”;

const results = await Promise.allSettled([
Promise.resolve(1),
Promise.reject(new Error('fail'))
]);
console.log(results[0].status); // 'fulfilled'
console.log(results[1].status); // 'rejected'基于 Promise.all() 中第一个失败即停止的行为的具体问题
在使用 Promise.all() 进行并发映射时,一旦数组中的某个 Promise 被拒绝,其余尚未完成的 Promise 虽然仍在后台运行,但 Promise.all() 返回的 Promise 会立即进入拒绝状态,导致后续代码无法获取其他成功任务的结果。这种行为适用于“全有或全无”的场景,但在需要部分成功的场景中会导致数据丢失。


















