实现Promise.all 方法
1.Promise.all() 方法执行完成之后还是返回一个 promise对象 所以封装方法的时候必须最终返回一个promise对象
function promiseAll(arrayPromise){
return new Promise((resolve,reject)=>{
})
}
2.传入Promise.all方法内的promise数组内所有执行完成最终耗时为最长耗时的promise,所以可以知道内部应该是promise数组内的方法都是异步执行的,并且最终返回的结果是一个按传入promise数组顺序的promise结果,还需要知道的是 只要其中一个 报错那么 就会 视作失败。
function promiseAll(arrayPromise){
return new Promise((resolve,reject)=>{
const array = []; //最终返回的数组
let count = 0;
arrayPromise.forEach(async (promise,index)=>{
array[index] = await promise().catch((err)=>{
reject(err); //只要其中一个 报错 那么 就抛出异常
});
count ++;
if(count === arrayPromise.length){ //结果数组长度 等于参数数组长度 并且无空 视作完成
resolve(array);
}
})
})
}