let P1 = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve("p1 data")
}, 500)
})
let P2 = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve("p2 data")
}, 500)
})
Promise.all([P1, P2]).then(function (results) {
console.log(results) // ["p1 data", ""p2 data""]
})
今天遇到一个情况是,有多个接口需要都请求到数据才能继续向下执行,然后用Promise.all() 方法。
但是如果有一个Promise 里面出错了执行了 reject ,如下代码,那么results 就拿不到数据了,这个时候的做法有两种
var P1 = new Promise(function (resolve, reject) {
setTimeout(function () {
// resolve('')
reject("p1 出错")
}, 500)
})
一、可以给 P1.catch((error) => { ... }),让P1的错误自己处理。
二、也可以在每一个Promise 都不执行 reject()。