Promise.all() 接受多个Promise对象 数组形式传递参数
所有的Promise都变成fulfilled时, 再拿到结果
// 创建多个Promise
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(11111)
}, 1000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(22222)
}, 2000);
})
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(33333)
}, 3000);
})
// 传入多个Promise对象的数组
// 不是Promise对象的值会转成Promise对象
Promise.all([p2, p1, p3, "aaaa"]).then(res => {
console.log(res)
//等待3秒 [ 22222, 11111, 33333, 'aaaa' ] 打印结果按传递参数的顺序,不按new Promise状态变化顺序
}).catch(err => {
console.log("err:", err)
})
如果在拿到所有结果之前, 有一个promise变成了rejected, 那么整个promise是rejected
// 创建多个Promise
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(11111)
}, 1000);
})
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(22222) //有一个promise变成了rejected, 那么整个promise是rejected
}, 2000);
})
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(33333)
}, 3000);
})
// 传入多个Promise对象的数组
// 不是Promise对象的值会转成Promise对象
Promise.all([p2, p1, p3, "aaaa"]).then(res => {
console.log(res)
}).catch(err => {
console.log("err:", err) // 2秒后直接抛出错误 err: 22222
})