# 自己写一个Promise.all方法
<script>
// 1.书写测试用例,定义三个Promise对象数据,并将他们放在一个数组arr里面
// 2.调用Promise.all方法
// 3.自定义Promise.all方法
// 3.1 promise.all方法返回的依然是一个Promise对象
// 3.2 循环arr数组里面的Promise,只有所有的Promise都返回的是对的才返回resolve 所有的结果数据resolveRes,否则返回reject err
Promise.all=function(arr){
return new Promise((resolve,reject)=>{
let resolveRes=[]
for(let i=0;i<arr.length;i++){
Promise.resolve(arr[i]).then(res=>{
resolveRes[i]=res
if(i==arr.length-1){
return resolve(resolveRes)
}
},err=>{
return reject[err]
}).catch(err=>{
console.log(err)
})
}
})
}
// test
let a=new Promise((resolve,reject)=>{
resolve(1+1)
})
let b=new Promise((resolve,reject)=>{
resolve(2+2)
})
let c=new Promise((resolve,reject)=>{
resolve(3+3)
})
let arr=[a,b,c]
Promise.all(arr).then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err)
})
</script>