let p = new Promise((resolve,reject)=>{
console.log('第一个异步任务开始了');
setTimeout(() => {
resolve('第一次异步结果')
}, 1000);
})
let p2 = new Promise((resolve,reject)=>{
console.log('第二个异步任务开始了');
setTimeout(() => {
resolve('第二次异步结果')
}, 2000);
})
let p3 = new Promise((resolve,reject)=>{
console.log('第三个异步任务开始');
setTimeout(() => {
resolve('第三次异步结果')
}, 3000);
})
Promise.all([p,p2,p3]).then(arr=>{
console.log('三个异步都结束了');
})
// 并发:
// p p2 p3 同时触发。等三个都接受在执行下一个任务。
let state = new Date().getTime();
Promise.all([p,p2,p3]).then(arr=>{
let timer = (new Date().getTime()) - state;
console.log('三个异步都结束了');
console.log(arr);
console.log(timer);
},()=>{
console.log('有一个拒绝的');
})
// arr 数组
// 数组元素:对应的promise对象.[[PromiseResult]]
总结
* Promise.all()
* 作用:可以同时触发多个promise,用于处理并发任务,
* 等多个异步都结束的在执行下一个任务
* 参数:元素:元素promise实例对象
* 返回值:全新的promise实例
* [[PromiseResult]]:[p结果,p2结果,p3结果]
* then 三个实例对象都变为 已接受状态 时候触发回调函数
* 回参:数组:数组元素为三个实例对象的[[promiseResult]],
话句话三个实例对象的运算结果