目录
Promise.all的使用Promise.allSettled的使用
一、Promise.all的使用
1) 有一个reject时
Promise.all返回的是promise所以可以继续调用promise原型上的方法,只是没有值而已
reject时,失败的回调只能被``捕获一次,在then中捕获的话,在catch中就不会再被捕获
all中,有一个任务失败了,就会直接返回这个失败的结果。其他的忽略。 只有任务数组中全部都成功了,才会把所有的任务结果全部返回。
const p1 = Promise.resolve(1)
const p2 = Promise.resolve(2)
const p3 = Promise.reject(0)
Promise.all([p1,p2,p3]).then(data=>{
console.log('resolve:',data)
},err=>{
console.log('then 中 reject:',err)
}).catch(err=>{
console.log('catch 中 reject:',err)
}).then(data=>{// Promise.all返回的是promise所以可以继续调用promise原型上的方法,只是没有值而已
console.log(111,data)
})
2) 全部resolve时
all 全部成功时才会全部返回,并且返回了一个数组。接收一个数组,返回一个数组
const p1 = Promise.resolve(1)
const p2 = Promise.resolve(2)
const p3 = Promise.resolve(0)
Promise.all([p1,p2,p3]).then(data=>{
console.log('resolve:',data)
},err=>{
console.log('then 中 reject:',err)
}).catch(err=>{
console.log('catch 中 reject:',err)
}).then(data=>{// Promise.all返回的是promise所以可以继续调用promise原型上的方法,只是没有值而已
console.log(111,data)
})
二、Promise.allSettled的使用
const p1 = Promise.resolve(1)
const p2 = Promise.resolve(2)
const p3 = Promise.reject(0)
Promise.allSettled([p1,p2,p3]).then(data=>{
console.log('resolve:',data)
},err=>{
console.log('then 中 reject:',err)
}).catch(err=>{
console.log('catch 中 reject:',err)
})
参考
总结
-
Promise.all返回的是promise所以可以继续调用promise原型上的方法,只是没有值而已 -
Promise中reject时,失败的回调只能被``捕获一次,在then中捕获的话,在catch中就不会再被捕获 -
all 全部成功时才会全部返回,并且返回了一个数组。接收一个数组,返回一个数组 -
allSettled和all一样,入数组,出数组。allSettled入参的数组中有reject的,也会全部返回,这是他比all优势的地方 -
Promise.resolve(1).then(data=>{console.log(data)}); // 1
Promise.allSettled() 与 Promise.all() 各自的适用场景
Promise.allSettled() 更适合:
- 彼此不依赖,其中任何一个被
reject,对其它都没有影响 - 期望知道每个
promise的执行结果
Promise.all() 更适合:
- 彼此相互依赖,其中任何一个被
reject,其它都失去了实际价值