手动实现Promise.all方法
Promise.all是怎么使用的
let p1 = new Promise((reslove, reject)=>{ setTimeout(()=>{ reslove(1111) },1000) }) let p2 = new Promise((reslove, reject)=>{ setTimeout(()=>{ reslove(2222) },2000) }) Promise.all([p1, p2]).then((res)=>{ console.log(res);//返回 [1111, 2222] })
那如何手动实现一个Promise.all呢, 直接上代码
function myPromiseAll(lists) { return new Promise((reslove, reject) => { let resArr = []; let num = 0; lists.forEach(item => { item.then(res => { resArr.push(res); num++ if (num == lists.length) { reslove(resArr) } }) }); }) }
myPromiseAll([p1, p2]).then((res) => {
console.log(res); //[1111,2222]
})