Promise.all 的特性:
- 返回也是一个promise;
- 返回参数也是数组,与输入一一对应;
- 只要有一个promise失败,立刻报错返回,不再等待其他;
Promise.prototype.all = function(promiseList){
const result = [];
const count =0;
// 返回一个promise
return new Promise(function(resolve, reject){
promiseList.forEach((item, index) =>{
item.then(res=>{
// 按顺序放response
result[index] = res;
count++;
// 所有promise返回后,才resolve
if(count === promiseList.length){
resolve(result);
}
}).catch(err=>{
// 一旦有一个出错,终止退出
reject(err);
})
})
})
}