ES10 中 Promise.allSettled() 的用法详解

介绍

Promise 是 JavaScript 中的异步编程模式,它可以更优秀地处理异步操作,让代码更加简洁和易读。Promise.all() 方法可以同时处理多个 Promise 对象,当所有 Promise 对象都成功返回后,Promise.all() 才会返回结果;如果其中某一个 Promise 对象出现了错误或者超时,它会立即返回错误或者超时信息。

ES10 中新增加了 Promise.allSettled() 方法,主要用于并行运行多个 Promise 对象,并返回每个 Promise 对象的结果(无论成功或失败)。Promise.allSettled() 接收一个包含 Promise 对象的数组作为参数,返回一个包含该数组中每个 Promise 对象的结果的数组。

语法

Promise.allSettled(iterable)

  • iterable: 一个包含 Promise 对象的可迭代对象。

返回值

Promise.allSettled() 返回一个 Promise 对象。当该数组中的所有 Promise 对象都完成时,该 Promise 对象则会 resolve 并返回一个包含所有 Promise 对象的结果的数组。每个结果都是一个带有 status 和 value 或者 reason 属性的对象。

  • status:即完成状态,它是一个字符串,只能是 "fulfilled" 或者 "rejected"。
  • value 或者 reason:表示 Promise 执行的结果。如果 status 是 "fulfilled",则这个值表示 Promise 的 resolve() 方法的返回值;如果 status 是 "rejected",则这个值表示 Promise 的 reject() 方法的返回值。

示例

以下是一个使用 Promise.allSettled() 方法的示例代码。假设需要异步请求三个 API,获取它们的数据并一起处理,用 Promise.allSettled() 方法就可以同时处理这三个 Promise 对象。

上述代码中,使用了 fetch() 函数来获取 API 数据,它是一个返回 Promise 对象的函数。在 Promise.allSettled() 方法中,使用包含三个 Promise 对象的数组作为参数,当这三个 API 数据都返回后,Promise.allSettled() 方法会返回一个结果数组,其中每个结果对象都包含了对应 API 返回的数据或错误信息。

总结与指导

Promise.allSettled() 方法的出现为我们提供了更加灵活的异步编程方式,让我们在处理多个 Promise 对象时可以同时获取它们的成功或失败结果。在实际开发中,需要注意的是,Promise.allSettled() 方法会等待所有 Promise 对象都完成后才会返回结果,这可能会影响整个应用的性能。所以在使用 Promise.allSettled() 方法时,需要确保 Promise 对象的数量和处理时间都可以接受,以避免出现性能问题。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6549ed747d4982a6eb422b12


纠错
反馈