在 ECMAScript 2020 中,Promise.allSettled() 是一个新的 Promise 方法,它返回一个 Promise,该 Promise 在所有给定的 Promise 已经完成或拒绝并且所有 Promise 的结果都已经处理后才会被解决。与 Promise.all() 不同的是,Promise.allSettled() 不会在任何 Promise 被拒绝时立即拒绝,而是在所有 Promise 完成后才会解决。
Promise.all() 和 Promise.allSettled() 的区别
Promise.all() 和 Promise.allSettled() 都可以用来等待多个 Promise 完成,但它们有一些区别:
- Promise.all() 会在任何一个 Promise 被拒绝时立即拒绝,而 Promise.allSettled() 会在所有 Promise 完成后才会解决。
- Promise.all() 返回一个 Promise,该 Promise 解决后返回所有 Promise 的结果数组。如果有任何一个 Promise 被拒绝,该 Promise 将被拒绝并返回拒绝的原因。而 Promise.allSettled() 返回一个 Promise,该 Promise 解决后返回一个对象数组,该数组包含每个 Promise 的结果。如果 Promise 被解决,结果对象将包含一个 value 属性,如果 Promise 被拒绝,结果对象将包含一个 reason 属性。
Promise.allSettled() 的语法
Promise.allSettled() 方法的语法如下:
Promise.allSettled(promises)
其中,promises 参数是一个 Promise 对象数组,用于等待完成。
Promise.allSettled() 的返回值
Promise.allSettled() 方法返回一个 Promise 对象,该对象在所有 Promise 完成后被解决。解决时,它将返回一个对象数组,该数组包含每个 Promise 的结果。如果 Promise 被解决,结果对象将包含一个 value 属性,如果 Promise 被拒绝,结果对象将包含一个 reason 属性。
以下是一个使用 Promise.allSettled() 的示例代码:
-- -------------------- ---- ------- ----- -------- - - ------------------- ------------------ --------------- ------------------ -- ---------------------------- ------------- -- - ---------------------- -- - -- -------------- --- ------------ - -------------------------- - ---- - ----------------------------- - --- -- ------------ -- - --------------------- ---
上面的示例代码中,我们创建了一个包含三个 Promise 的数组。第一个和第三个 Promise 都是解决的,而第二个 Promise 是被拒绝的。我们使用 Promise.allSettled() 方法等待所有 Promise 完成,并在解决后遍历结果数组,打印每个 Promise 的结果。
Promise.allSettled() 的学习意义
Promise.allSettled() 方法提供了一种更加灵活的方式来等待多个 Promise 完成。它不会在任何一个 Promise 被拒绝时立即拒绝,而是在所有 Promise 完成后才会解决,这使得代码更加健壮和可靠。此外,Promise.allSettled() 还可以让我们更方便地处理多个 Promise 的结果,而不必担心其中任何一个 Promise 是否被拒绝。
总结
Promise.allSettled() 是 ECMAScript 2020 中新增的一个 Promise 方法,用于等待多个 Promise 完成。与 Promise.all() 不同的是,Promise.allSettled() 不会在任何一个 Promise 被拒绝时立即拒绝,而是在所有 Promise 完成后才会解决。它返回一个对象数组,该数组包含每个 Promise 的结果。如果 Promise 被解决,结果对象将包含一个 value 属性,如果 Promise 被拒绝,结果对象将包含一个 reason 属性。Promise.allSettled() 方法提供了一种更加灵活的方式来等待多个 Promise 完成,使得代码更加健壮和可靠。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6617802cd10417a2227623ec