ECMAScript 2020:Promise.allSettled() 的使用方法及案例

阅读时长 3 分钟读完

在 ECMAScript 2020 版本中,新增了 Promise.allSettled() 方法,该方法与 Promise.all() 相似,但 Promise.allSettled() 允许在 Promise 对象解决或拒绝后继续进行操作。本文将介绍 Promise.allSettled() 方法的使用方法及案例。

Promise.allSettled() 方法介绍

Promise.allSettled() 方法返回一个 Promise ,该 Promise 在所有给定的 Promise 对象都已经结束执行后再执行。当所有 Promise 都已解决时,该 Promise 的解决值为一个数组,表示所有 Promise 对象的解决结果(无论成功或失败);如果有任何一个 Promise 被拒绝,则该 Promise 将解决为一个 rejected 状态,返回一个数组,其中包含每个 Promise 对象的拒绝原因。

Promise.allSettled() 方法使用方法

Promise.allSettled() 方法接收一个可迭代对象,如数组。示例代码如下:

该代码执行了三个 Promise 对象,它们分别为 promise1,promise2 和 promise3,然后等待它们全部执行完成,最后汇总结果并输出到控制台。

Promise.allSettled() 方法案例

接下来,我们通过一个案例来深入理解 Promise.allSettled() 方法的使用。

假设我们有一个网站需要从多个 API 接口获取数据,每个 API 接口返回的数据格式和状态码都不同。我们需要在所有请求完成后,来检查哪些请求成功了,哪些请求失败了。代码如下:

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

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

该代码通过 fetch API 向三个接口发送请求,然后等待它们都执行完成后,统计每个接口的执行结果并输出到控制台。如果接口请求失败,则输出失败原因和对应接口的 URL;如果成功,则输出成功状态和对应接口的 URL。

总结

Promise.allSettled() 方法允许在 Promise 对象解决或拒绝后继续进行操作,它返回一个 Promise ,该 Promise 在所有给定的 Promise 都已经结束执行后再执行。该方法在处理多个 Promise 对象时非常有用,例如在并行执行多个异步请求时,可以避免其中一个请求失败时,导致整个程序的中断。

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

纠错
反馈