ES11 中的 Promise.allSettled() 方法如何工作?

阅读时长 4 分钟读完

Promise.allSettled() 方法简介

Promise.allSettled() 方法是 ES11 中新增的 Promise 方法,它接收一个 Promise 数组作为参数,返回一个 Promise 对象。这个 Promise 对象在所有 Promise 的状态都已经被解决或者拒绝时才会被解决,其结果是一个数组,包含了每个 Promise 的解决和拒绝结果。

Promise.allSettled() 方法的特点

Promise.all() 方法不同的是,Promise.allSettled() 方法不会在 Promise 拒绝时立即中止执行。无论 Promise 成功还是失败,Promise.allSettled() 都会执行所有的 Promise,并把每个 Promise 的状态和结果保存在一个数组中返回。这种特性使得 Promise.allSettled() 方法非常适合应用程序场景,如在应用程序中处理多个异步操作时,如果知道每个操作都会被执行,然后再展示结果给用户,Promise.allSettled() 方法就显得很有用。

Promise.allSettled() 方法的语法

参数:

  • iterable: 可迭代对象,可以是数组、Set 等。

返回值:

  • 返回一个 Promise 对象,在所有 Promise 解决或拒绝后解决,并返回一个数组。

Promise.allSettled() 方法的用法

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

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

输出结果:

Promise.allSettled() 方法兼容性

Promise.allSettled() 方法是 ES11 中新增的,因此需要注意浏览器兼容性。截至2021年7月,Promise.allSettled() 方法已经被 Chrome、Firefox、Safari、Edge、Opera 等主流浏览器所支持。

总结

  • Promise.allSettled() 方法接收一个 Promise 数组作为参数,返回一个 Promise 对象。
  • Promise.allSettled() 可以处理多个 Promise,不管 Promise 解决还是拒绝,都会执行所有 Promise,而不是在第一个 Promise 拒绝时中止执行。
  • Promise.allSettled() 方法将所有 Promise 的 resolve 和 reject 状态封装在一个数组中返回。
  • Promise.allSettled() 方法在 ES11+ 中新增,需要注意浏览器兼容性。
  • Promise.allSettled() 方法适用于多个异步操作的场景,其中需要等待所有操作结束后再处理结果。

参考链接

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

纠错
反馈