Promise.allSettled() 方法是 ES10 新增的一种用于处理异步请求的方式,它可以将多个 Promise 实例包装成一个新的 Promise 实例,并返回一个结果数组,其中每个元素都是一个对象,该对象表示传入 Promise 数组中对应的 Promise 对象的状态和结果。
什么是 Promise.allSettled()?
在学习 Promise.allSettled() 之前,我们先来回顾一下 Promise.all() 的用法。
Promise.all() 方法可以将多个 Promise 实例包装成一个新的 Promise 实例,并返回一个结果数组,其中每个元素都是对应的 Promise 对象的结果,只有所有的 Promise 实例都返回结果后,才能得到最终的结果。
而 Promise.allSettled() 则更进一步,不仅可以返回所有 Promise 的结果,还可以获取每个 Promise 实例的状态。在 Promise.all() 中,只有 Promise 实例都返回后才会返回一个新的 Promise,但它没有办法区分 Promise 实例是成功返回还是失败返回,而 Promise.allSettled() 则可以区分每个 Promise 实例的状态。
Promise.allSettled() 的使用
Promise.allSettled() 方法接收一个 Promise 实例数组作为参数,可以使用 Promise.allSettled() 方法等待多个 Promise 实例同时执行完毕并返回结果。
下面是 Promise.allSettled() 的示例代码:
-- -------------------- ---- ------- ----- -------- - --------------------------- ----- -------- - ------------------------- ----- -------- - --------------------------- ----------------------------- --------- ---------- ------------- -- - --------------------- -- -------- -- - ----------------- -- -- ------ -- - -- - ------- ------------ ------ --------- -- -- - ------- ----------- ------- -------- -- -- - ------- ------------ ------ --------- - -- -
Promise.allSettled() 返回结果
Promise.allSettled() 返回一个结果数组,数组中的每个元素都表示接收到的 Promise 实例对象的状态和结果。
每个元素都是一个包含 status 和 value 或 reason 属性的对象,其中 status 表示 Promise 实例的状态,value 或 reason 分别表示 Promise 实例的返回值或错误信息。
status 可能的值有两种:
- fulfilled 成功返回,对应 value。
- rejected 失败返回,对应 reason。
Promise.allSettled() 的意义
Promise.allSettled() 方法的出现使我们能够更加方便地处理多个异步请求,无论这些请求是成功返回还是失败返回,都可以一并返回给开发者。
在开发实践中,我们通常会遇到需要同时发起多个请求的情况,比如需要通过不同的接口获取不同数据,通过 Promise.allSettled() 我们可以实现同时发起多个请求,便于我们的开发和调试。
同时,Promise.allSettled() 也可以用来检查多个数据源中是否包含错误,如果所有数据源都成功返回则无需处理,否则需要根据返回值来进行处理。
总结
ES10 之 Promise.allSettled() 可以将多个 Promise 实例包装成一个新的 Promise 实例,并返回一个结果数组,数组中的每个元素都是对应的 Promise 对象的状态和结果。
使用 Promise.allSettled() 方法可以更加方便地处理多个异步请求,不论是成功还是失败返回的结果。
同时,它还可以用来检查多个数据源中是否包含错误,无疑是前端开发中非常重要的一个方法,值得我们多加学习和应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a68ff148841e98943362d3