• 手动实现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]
        })
     
  • 相关阅读:
    iOS开源控件库收集
    Ruby中的几种除法
    Font
    PlaySound
    STL
    APIs
    cin and cout
    CreateWindow
    Introducing Direct2D
    VC 常用代码
  • 原文地址:https://www.cnblogs.com/nljy/p/15229970.html
Copyright © 2020-2023  润新知