Promise.allSettled 的使用场景一般是需要同时请求一堆接口,然后其中有些接口可能会失败的情况,失败的返回失败,成功的返回成功的结果,失败并不阻塞后续的接口请求,并且每个接口返回的内容都可控。 使用的demo如下:
const test = async () => {
const a = () => {
return new Promise<string>((resolve, reject) => {
setTimeout(() => {
resolve('success')
}, 500)
})
}
const b = () => {
return new Promise<string>((resolve, reject) => {
setTimeout(() => {
reject('fail')
}, 800)
})
}
const c = () => {
return new Promise<string>((resolve, reject) => {
setTimeout(() => {
resolve('success')
}, 300)
})
}
const resultArr = await Promise.allSettled([a,b,c])
// 若成功则 status会返回'fulfilled'状态,反之返回'rejected'
return resultArr.map(e => (e.status === 'fulfilled' ? e.value : e.reason))
}
test()
// console: ['success',reason,'success']