在 JavaScript 中,Promise 是一种用于处理异步操作的对象。它提供了一种更加优雅和可读性强的方式来处理异步操作,避免了回调地狱的问题。ES2020 引入了 Promise 的新 API,其中包括 allSettled
方法。本文将详细介绍 allSettled
方法的用法以及与 all
方法的区别,并提供在不支持该新特性的环境下实现 Polyfill 的代码示例。
Promise.allSettled 的用法
allSettled
方法接受一个 Promise 数组作为参数,返回一个新的 Promise,该 Promise 在所有给定的 Promise 都已经被解决或被拒绝后才会被解决。与 all
方法不同,allSettled
不会在遇到第一个被拒绝的 Promise 时立即返回,而是会等待所有 Promise 都完成后返回。
allSettled
返回的 Promise 解决时,它的值是一个包含所有 Promise 结果的数组,每个结果对象都包含以下属性:
status
:表示 Promise 的状态,可能的值为 “fulfilled”(已解决)或 “rejected”(已拒绝)。value
:如果 Promise 被解决,表示解决的值;如果 Promise 被拒绝,则为 undefined。reason
:如果 Promise 被拒绝,表示拒绝的原因;如果 Promise 被解决&#