Promise.allSettled() 方法简介
Promise.allSettled()
方法是 ES11 中新增的 Promise 方法,它接收一个 Promise 数组作为参数,返回一个 Promise 对象。这个 Promise 对象在所有 Promise 的状态都已经被解决或者拒绝时才会被解决,其结果是一个数组,包含了每个 Promise 的解决和拒绝结果。
Promise.allSettled() 方法的特点
与 Promise.all()
方法不同的是,Promise.allSettled()
方法不会在 Promise 拒绝时立即中止执行。无论 Promise 成功还是失败,Promise.allSettled()
都会执行所有的 Promise,并把每个 Promise 的状态和结果保存在一个数组中返回。这种特性使得 Promise.allSettled()
方法非常适合应用程序场景,如在应用程序中处理多个异步操作时,如果知道每个操作都会被执行,然后再展示结果给用户,Promise.allSettled()
方法就显得很有用。
Promise.allSettled() 方法的语法
Promise.allSettled(iterable)
参数:
iterable
: 可迭代对象,可以是数组、Set 等。
返回值:
- 返回一个 Promise 对象,在所有 Promise 解决或拒绝后解决,并返回一个数组。
Promise.allSettled() 方法的用法
-- -------------------- ---- ------- ----- -------- - - ------------------- ------------------ -------------- --------- ------------------- -- ------------------------------------------- -- - --------------------- ---
输出结果:
[ { status: 'fulfilled', value: 1 }, { status: 'rejected', reason: Error: Promise Error at <anonymous>:3:29 }, { status: 'fulfilled', value: 3 } ]
Promise.allSettled() 方法兼容性
Promise.allSettled()
方法是 ES11 中新增的,因此需要注意浏览器兼容性。截至2021年7月,Promise.allSettled()
方法已经被 Chrome、Firefox、Safari、Edge、Opera 等主流浏览器所支持。
总结
Promise.allSettled()
方法接收一个 Promise 数组作为参数,返回一个 Promise 对象。Promise.allSettled()
可以处理多个 Promise,不管 Promise 解决还是拒绝,都会执行所有 Promise,而不是在第一个 Promise 拒绝时中止执行。Promise.allSettled()
方法将所有 Promise 的 resolve 和 reject 状态封装在一个数组中返回。Promise.allSettled()
方法在 ES11+ 中新增,需要注意浏览器兼容性。Promise.allSettled()
方法适用于多个异步操作的场景,其中需要等待所有操作结束后再处理结果。
参考链接
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64819c5a48841e9894115e74