了解 ES8 中 Promise.allSettled 方法的用法

ES8 中新增了一个 Promise.allSettled 方法,该方法可以让我们更好地处理一组 Promise 的状态。在本文中,我们将深入了解该方法的用法以及其在实际项目中的应用。

Promise.all 方法的问题

在 ES6 中,我们使用 Promise.all 方法可以同时处理多个 Promise 的状态。例如:

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

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

上面的代码中,我们同时处理了三个 Promise 的状态。如果其中有一个 Promise 被 reject 了,整个 Promise.all 方法都会被 reject。但是,如果我们需要知道每个 Promise 的状态,该怎么办呢?

Promise.allSettled 方法的用法

Promise.allSettled 方法可以让我们知道每个 Promise 的状态,不管是 fulfilled 还是 rejected。例如:

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

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

上面的代码中,我们使用 Promise.allSettled 方法同时处理了三个 Promise 的状态。不管是 fulfilled 还是 rejected,我们都可以知道每个 Promise 的状态。

Promise.allSettled 方法返回的是一个 Promise,该 Promise 的状态只有两种:fulfilled 和 rejected。如果所有 Promise 都 fulfilled,该 Promise 的状态为 fulfilled,返回的结果是一个数组,数组中的每个元素都是一个对象,该对象包含了 Promise 的状态和值。如果有一个或多个 Promise 被 rejected,该 Promise 的状态为 fulfilled,返回的结果同样是一个数组,数组中的每个元素都是一个对象,该对象包含了 Promise 的状态和原因。

Promise.allSettled 方法的应用

Promise.allSettled 方法可以在实际项目中广泛应用。例如,我们可以使用该方法处理多个请求的状态,不管是成功还是失败,我们都可以知道每个请求的状态。例如:

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

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

上面的代码中,我们使用 Promise.allSettled 方法处理了多个请求的状态。不管是成功还是失败,我们都可以知道每个请求的状态。如果请求成功,我们可以打印出请求的结果;如果请求失败,我们可以打印出请求的原因。

总结

Promise.allSettled 方法是 ES8 中的一个新增方法,可以让我们更好地处理一组 Promise 的状态。使用该方法,我们可以知道每个 Promise 的状态,不管是 fulfilled 还是 rejected。在实际项目中,该方法可以广泛应用于处理多个请求的状态等场景。

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