批量执行
Promise.all([p1,p2,p3,...])用于将多个Promise实例,包装成一个新的promise 实例。
返回的实例就是普通Promise
他接受一个数组作为参数
数组里可以是Promise对象,也可以是别的值,只有Promise会等待状态改变。
当所有的子Promise都完成,该Promise完成,返回值是全部值德 数组
有任何一个失败,该promise失败,返回值是第一个失败的子promise的结果
console.log('here we go');
Promise.all([1,2,3])
.then(all=>{
console.log('1:',all);
return Promise.all([function(){
console.log('ooxx');
},'xxoo',false])
})
.then(all=>{
console.log('2:',all)
let p1=new Promise(resolve=>{
setTimeout(()=>{
resolve('I\'m P1');
},1500)
});
let p2=new Promise(resolve=>{
setTimeout(()=>{
resolve('I\'m P2');
},1450)
})
return Promise.all([p1,p2]);
})
.then(all=>{
console.log('3:',all)
let P1=new Promise(resolve=>{
setTimeout(()=>{
resolve('I\'m P1');
},1500)
});
let P2=new Promise((resolve,reject)=>{
setTimeout(()=>{
reject('I\'m P2');
},1000)
});
let P3=new Promise((resolve,reject)=>{
setTimeout(()=>{
reject('I\'m P3');
},3000)
})
return Promise.all([p1,p2,p3]);
})
.then(all=>{
console.log('all',all);
})
.catch(err=>{
console.log('Catch',err);
})
here we go
1:[1,2,3]
2:[[Function],'xxoo',false]
3:['I\'m P1','I\'m P2']
Catch: I'm P2