ES12 新特性:Promise.allSettled

简介

Promise.allSettled 是 ES12 中新增的 Promise 方法,它可以接收一个 Promise 数组作为参数,返回一个 Promise 对象,该对象在所有 Promise 都完成(无论成功或失败)后才会 resolve,返回一个结果数组,数组中的每个元素都是一个对象,该对象包含了对应的 Promise 的状态(fulfilled 或 rejected)和结果(成功时为返回值,失败时为错误对象)。

优势

Promise.allSettled 的出现解决了 Promise.all 方法在处理 Promise 数组时的一个痛点,即当 Promise 数组中存在一个 Promise 被 reject 时,Promise.all 就会直接返回一个 rejected 状态的 Promise,导致其他 Promise 的结果无法被获取。而 Promise.allSettled 返回的结果数组中,每个元素都包含了对应 Promise 的状态和结果,这样就可以更加灵活地处理 Promise 数组中的数据。

使用示例

下面是一个简单的使用示例:

在上面的例子中,我们传入了一个包含三个 Promise 的数组,其中 promise2 被 reject,但是 Promise.allSettled 仍然返回了一个包含三个元素的结果数组,每个元素都包含了对应 Promise 的状态和结果。

注意事项

需要注意的是,Promise.allSettled 的返回结果中每个元素都有一个 status 属性,该属性的值为字符串 fulfilled 或 rejected,而不是 Promise 对象中的状态码(即 resolved 或 rejected)。

总结

Promise.allSettled 是 ES12 中新增的 Promise 方法,它返回一个 Promise 对象,该对象在所有 Promise 都完成(无论成功或失败)后才会 resolve,返回一个结果数组,数组中的每个元素都是一个对象,该对象包含了对应的 Promise 的状态(fulfilled 或 rejected)和结果(成功时为返回值,失败时为错误对象)。Promise.allSettled 的出现解决了 Promise.all 方法在处理 Promise 数组时的一个痛点,即当 Promise 数组中存在一个 Promise 被 reject 时,Promise.all 就会直接返回一个 rejected 状态的 Promise,导致其他 Promise 的结果无法被获取。

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


纠错
反馈