手写实现promise.all

let p1 = new Promise((resolve,reject)=>{
    setTimeout(()=>{
        resolve(1111)
    },1000)
})

let p2 = new Promise((resolve,reject) => {
    setTimeout(()=>{
      resolve(2222)      
    },2000)
})

Promise.all([p1,p2]),then(res => {
    console.log(res)    // [1111,2222]
})  

// 手写实现 promise.all , 只返回成功的方法结果

function myPromiseAll(lists){
    return new Promise((resolve,reject) => {
        let resArr = []
        let num = 0;
        lists.forEach(item => {
            item.then(res => {
                resArr.push(res)
                num ++;
                if(num === lists.length){
                    resolve(resArr)
                }
            })
            
        })
    })
}

myPromiseAll([p1,p2]).then(res => {
    console.log(res)     // [1111,2222]
})


版权声明:本文为songlf521原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。