简介
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 数组中的数据。
使用示例
下面是一个简单的使用示例:
// javascriptcn.com 代码示例 const promise1 = Promise.resolve(1); const promise2 = Promise.reject(new Error('error')); const promise3 = Promise.resolve(3); Promise.allSettled([promise1, promise2, promise3]).then((results) => { console.log(results); // 输出: // [ // { status: 'fulfilled', value: 1 }, // { status: 'rejected', reason: Error: error at <anonymous>:2:21 }, // { status: 'fulfilled', value: 3 } // ] });
在上面的例子中,我们传入了一个包含三个 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