ECMAScript 2020: Promise.allSettled 新方法解析及使用场景

ECMAScript 2020 新增了一个 Promise 方法:Promise.allSettled。该方法可以接收一个 Promise 数组作为参数,返回一个新的 Promise,该 Promise 在所有传入的 Promise 都已经 resolve 或 reject 后才会 resolve,返回一个包含所有 Promise 状态的数组,状态包括 fulfilled 和 rejected。

语法

Promise.allSettled(iterable)

参数:

  • iterable:一个可迭代对象,通常是一个 Promise 数组。

返回值:

  • 返回一个新的 Promise 对象。

示例

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

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

输出结果:

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

使用场景

并行请求数据

在前端开发中,我们经常需要同时请求多个接口数据,然后根据响应结果做出相应的处理。使用 Promise.allSettled 方法可以方便地实现这个功能。

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

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

批量上传文件

在上传多个文件时,需要等待所有文件上传完成后再执行下一步操作。使用 Promise.allSettled 方法可以轻松实现这个功能。

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

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

总结

Promise.allSettled 方法可以方便地处理多个 Promise 的状态,适用于并行请求数据和批量上传文件等场景。在使用时需要注意,该方法返回的 Promise 一定会 resolve,不会 reject。

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