了解 ECMAScript 2021 中的 Promise.allSettled 方法及使用场景实践

阅读时长 4 分钟读完

什么是 Promise.allSettled 方法?

Promise.allSettled 方法是 ECMAScript 2021 (ES12) 新增的一个 Promise 方法,其作用是将多个 Promise 对象包装成一个新的 Promise 对象,并且在所有 Promise 对象都完成或被拒绝后,返回一个状态为已完成的 Promise 对象。

与 Promise.all 方法不同的是,Promise.allSettled 方法不会因为某个 Promise 对象被拒绝而立即停止执行,而是会等到所有的 Promise 对象都执行完毕,并返回一个包含所有 Promise 对象状态的数组对象。

该方法的语法如下:

其中 iterable 表示待包装的多个 Promise 对象,可以是数组、迭代器等对象。返回值为一个新的 Promise 对象,其解决值为一个包含所有 Promise 对象状态的数组对象。

以下是一个简单的示例:

-- -------------------- ---- -------
----- -------- - -------------------
----- -------- - -------------------
----- -------- - --- ----------------- ------- -- -
  ------------- -- -
    -------------
  -- ------
---

----------------------------- --------- ---------------------- -- -
  --------------------
---

输出结果为:

从结果可以看出,该方法返回了一个由所有 Promise 对象的状态组成的数组对象,其中 { status: 'fulfilled', value: <resolvedValue> } 表示该 Promise 对象已被解决,{ status: 'rejected', reason: <rejectedReason> } 表示该 Promise 对象已被拒绝。

Promise.allSettled 方法的使用场景实践

Promise.allSettled 方法主要用于在需要处理多个异步操作的场景下,优雅地处理所有操作的结果。

下面以一个简单的示例来说明该方法的使用场景:

-- -------------------- ---- -------
----- ------ - --------------------------------------
----- ------- - -
  - ---- ----------------- --
  - ---- --------------------- --
  - ---- --------------------- -
--

---------------------------------- -- ----------------
  ------------- -- -
    ---------------------
  ---

上述例子中,我们使用 Promise.allSettled 方法处理了多个异步请求在成功或失败时的返回结果,避免了在使用 Promise.all 方法时,由于某个请求被拒绝而导致整个 Promise 对象被拒绝的问题。

总结

Promise.allSettled 方法是 ECMAScript 2021 新增的一个 Promise 方法,主要用于优雅地处理多个 Promise 对象在执行完成或被拒绝时的返回结果。在实际开发中,我们可以使用该方法来避免 Promise.all 方法在某个 Promise 对象被拒绝时导致整个 Promise 对象被拒绝的问题,从而实现更优秀的异步代码编写方式。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651e875095b1f8cacd634e9b

纠错
反馈