重写Promise.all()方法

it2024-04-08  45

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) })
最新回复(0)