三种简单解决方案,
方案一: 在单个的 catch 中对失败的 Promise 请求做处理,在catch里面resolve就行了
var p1 = new Promise(resolve => {
let p1Data = b;
resolve(p1Data)
}).catch(err => {
return Promise.resolve("P1 无数据")
})
var p2 = new Promise(resolve => {
let p2Data = 'p2的有数据';
resolve(p2Data)
}).catch(err => {
return Promise.resolve("P2 无数据")
})
Promise.all([p1, p2]).then(res => {
console.log(res);
}).catch(err => {
throw new Error("Promise 执行错误", err)
})
方案二:使用allSettled
const promise1 = new Promise(resolve=>setTimeout(resolve,2000))
const promise2 = Promise.reject('123')
//传入的promise不管是成功的还是失败的,都会执行then方法
Promise.allSettled([promise1,promise2])
.then(()=>{
console.log('成功了')
})
方案三:把 reject 操作换成 resolve(new Error("...")) 处理
const promise1 = new Promise(resolve=>setTimeout(resolve,2000))
//失败操作使用resolve
const promise2 = Promise.resolve(new Error("..."))
//传入的promise不管是成功的还是失败的,都会执行then方法
Promise.all([promise1,promise2])
.then(()=>{
console.log('成功了')
})
以上就是三种基本的解决方案