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 对象,我们想要获取它们的状态和结果:
-- -------------------- ---- -------
----- -------- - -
-------------------
------------------------
------------------
--
----------------------------
------------- -- -
---------------------
---输出结果为:
[
{ status: 'fulfilled', value: 1 },
{ status: 'rejected', reason: 'error' },
{ status: 'fulfilled', value: 3 }
]可以看到,返回的数组包含了所有 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