什么是 Promise.allSettled 方法?
Promise.allSettled 方法是 ECMAScript 2021 (ES12) 新增的一个 Promise 方法,其作用是将多个 Promise 对象包装成一个新的 Promise 对象,并且在所有 Promise 对象都完成或被拒绝后,返回一个状态为已完成的 Promise 对象。
与 Promise.all 方法不同的是,Promise.allSettled 方法不会因为某个 Promise 对象被拒绝而立即停止执行,而是会等到所有的 Promise 对象都执行完毕,并返回一个包含所有 Promise 对象状态的数组对象。
该方法的语法如下:
Promise.allSettled(iterable)
其中 iterable 表示待包装的多个 Promise 对象,可以是数组、迭代器等对象。返回值为一个新的 Promise 对象,其解决值为一个包含所有 Promise 对象状态的数组对象。
以下是一个简单的示例:
-- -------------------- ---- ------- ----- -------- - ------------------- ----- -------- - ------------------- ----- -------- - --- ----------------- ------- -- - ------------- -- - ------------- -- ------ --- ----------------------------- --------- ---------------------- -- - -------------------- ---
输出结果为:
[ { status: 'fulfilled', value: 1 }, { status: 'fulfilled', value: 2 }, { status: 'rejected', reason: '失败' } ]
从结果可以看出,该方法返回了一个由所有 Promise 对象的状态组成的数组对象,其中 { status: 'fulfilled', value: <resolvedValue> }
表示该 Promise 对象已被解决,{ status: 'rejected', reason: <rejectedReason> }
表示该 Promise 对象已被拒绝。
Promise.allSettled 方法的使用场景实践
Promise.allSettled 方法主要用于在需要处理多个异步操作的场景下,优雅地处理所有操作的结果。
下面以一个简单的示例来说明该方法的使用场景:
-- -------------------- ---- ------- ----- ------ - -------------------------------------- ----- ------- - - - ---- ----------------- -- - ---- --------------------- -- - ---- --------------------- - -- ---------------------------------- -- ---------------- ------------- -- - --------------------- ---
上述例子中,我们使用 Promise.allSettled 方法处理了多个异步请求在成功或失败时的返回结果,避免了在使用 Promise.all 方法时,由于某个请求被拒绝而导致整个 Promise 对象被拒绝的问题。
总结
Promise.allSettled 方法是 ECMAScript 2021 新增的一个 Promise 方法,主要用于优雅地处理多个 Promise 对象在执行完成或被拒绝时的返回结果。在实际开发中,我们可以使用该方法来避免 Promise.all 方法在某个 Promise 对象被拒绝时导致整个 Promise 对象被拒绝的问题,从而实现更优秀的异步代码编写方式。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651e875095b1f8cacd634e9b