Promise.myall = function(arr){
let n = 0;//声明一个计算器,当全部执行成功后再resolve()
let resolveValue = [];//存放结果的数组
return new Promise(function(resolve,reject){
//对promise对象的数据进行循环
for(let i = 0;i<arr.length;i++){
//如果执行成功后,将结果添加到数组中,并且n++
arr[i].then(res=>{
resolveValue.push(res);
n++;
//如果n为参数数组的长度,证明全部都执行成功,执行resolve()
if(n === arr.length){
resolve(resolveValue)
}
} ).catch(err=>{
reject(err)
})
}
})
}
let p1 = new Promise(function(resolve,reject){
let x =0;
setTimeout(function(){
x++;
if(x==1){
resolve(x);
}
},1000)
});
let p2 = new Promise(function(resolve,reject){
let x = 0;
setTimeout(function(){
x++;
if(x==1){
resolve(x);
}
},1000)
})
Promise.myall([p1,p2]).then((res)=>{
console.log(res)
})
重写Promise.all()方法
最新推荐文章于 2022-05-26 22:21:45 发布