ES12 中的新特性:Promise.allSettled()

阅读时长 5 min read

Promise.allSettled() 是 ES12 中新增的一个 Promise 方法,它可以同时处理多个 Promise 对象,并返回一个包含所有 Promise 对象状态的数组,无论 Promise 对象是 fulfilled 还是 rejected。

Promise.allSettled() 的语法

Promise.allSettled(iterable)

  • iterable:一个可迭代对象,例如一个数组或一个 Set 对象,它包含多个 Promise 对象。

Promise.allSettled() 的返回值

Promise.allSettled() 返回一个 Promise 对象,它的状态由所有 Promise 对象的状态决定。

  • 如果所有 Promise 对象都是 fulfilled,那么 Promise.allSettled() 的状态为 fulfilled,返回的数组包含所有 Promise 对象的结果。
  • 如果至少有一个 Promise 对象是 rejected,那么 Promise.allSettled() 的状态为 fulfilled,返回的数组包含所有 Promise 对象的结果和状态。

Promise.allSettled() 的使用

Promise.allSettled() 可以在多个 Promise 对象同时执行时,方便地获取它们的状态并进行处理。例如,我们有一个数组包含多个 Promise 对象,我们想要获取它们的状态和结果:

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

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

输出结果为:

可以看到,返回的数组包含了所有 Promise 对象的状态和结果,无论成功还是失败。

Promise.allSettled() 的学习和指导意义

Promise.allSettled() 在处理多个 Promise 对象时非常实用,它可以帮助我们方便地获取它们的状态和结果,并进行相应的处理。同时,它的返回值也非常清晰明了,可以让我们更好地了解 Promise 对象的状态和执行情况。

在实际开发中,我们经常需要同时处理多个异步操作,例如发送多个请求、并行执行多个任务等等。使用 Promise.allSettled() 可以让我们更加高效地处理这些操作,并且不需要手动处理 Promise 对象的状态和结果,减少了代码的复杂度和出错的可能性。

示例代码

以下是一个使用 Promise.allSettled() 处理多个 Promise 对象的示例代码:

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

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

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

以上代码中,我们使用 Promise.allSettled() 处理了两个 Promise 对象,分别是 fetchUsers() 和 fetchPosts(),它们分别获取了用户和文章的数据。最终,我们可以方便地获取它们的状态和结果,并进行相应的处理。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67cb15f6e46428fe9e3b945e

Feed
back