手动实现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]
    })
 

 

posted @ 2021-09-05 16:58  隔壁老于头  阅读(310)  评论(0编辑  收藏  举报