Appearance
Promise.allSettled(新的API)
用于处理多个Promise的执行,且不会因为某个Promise的reject而终止其他的执行。
主要区别于Promise.all()
Promise.all()
- 只要有一个reject那么就立即结束
Promise.allSettled()
- 不管各自的处理结果,而是等所有的都执行结束才返回
语法
js
const promise1 = new Promise((resolve , reject) => setTimeout(() => {
console.log("resolve")
resolve(3)
},500))
const promise2 = new Promise((resolve , reject) => setTimeout(() => reject(10),1000))
Promise.allSettled([promise1 , promise2]).then((results) => {
console.log(results)
})
// 结果为:
// [{"status":"fulfilled","value":3},{"status":"rejected","reason":10}]
// 如果使用Promise.all() ?
Promise.all([promise1 , promise2]).then((results) => {
console.log(results)
})
// 结果为:
// [{"status":"rejected","reason":10}]
// 也不会打印 “resolve”
参数
- iterable
一个可迭代的对象,例如Array,其中每个成员都是Promise。
返回结果
返回一个所有成功或者失败的promise的结果的集合,注意对于每个结果对象,都有一个 status 字符串。如果它的值为 fulfilled,则结果对象上存在一个 value 。如果值为 rejected,则存在一个 reason 。value(或 reason )反映了每个 promise 决议(或拒绝)的值。
如:
成功
{"status":"fulfilled","value":3}
成功
{"status":"rejected","reason":10}