Promise.allSettled 的作用是什么?

· 约 4 分钟读完 · 第 107 / 142 章

推荐答案

Promise.allSettled 是 ECMAScript 2020 引入的一个静态方法,用于处理多个 Promise 对象。它接收一个 Promise 对象数组作为参数,并返回一个新的 Promise 对象。这个新的 Promise 对象在所有输入的 Promise 对象都已完成(无论是成功还是失败)时才会被解决。返回的 Promise 对象的结果是一个数组,数组中的每个元素都是一个对象,表示对应输入 Promise 的最终状态(fulfilled 或 rejected)及其值或原因。

本题详细解读

1. 基本用法

2. 返回值

Promise.allSettled 返回的 Promise 对象的结果是一个数组,数组中的每个元素都是一个对象,包含以下属性:

  • status: 表示 Promise 的最终状态,可以是 'fulfilled' 或 'rejected'。
  • value: 如果状态为 'fulfilled',则此属性包含 Promise 的解决值。
  • reason: 如果状态为 'rejected',则此属性包含 Promise 被拒绝的原因。

3. 与 Promise.all 的区别

  • Promise.all: 只有当所有输入的 Promise 都成功解决时,返回的 Promise 才会被解决。如果任何一个 Promise 被拒绝,返回的 Promise 会立即被拒绝,并且不会等待其他 Promise 的结果。
  • Promise.allSettled: 无论输入的 Promise 是成功还是失败,返回的 Promise 都会在所有输入的 Promise 完成后被解决。它不会因为某个 Promise 被拒绝而提前结束。

4. 适用场景

Promise.allSettled 适用于需要处理多个异步操作,并且希望在所有操作都完成后(无论成功或失败)再进行下一步处理的场景。例如,批量请求多个 API,并且需要知道每个请求的最终结果时,可以使用 Promise.allSettled。

5. 示例

在这个示例中,无论每个 API 请求是否成功,Promise.allSettled 都会在所有请求完成后返回结果,并允许你根据每个请求的状态进行相应的处理。