实现 Promise.all

时间:2020-05-28
本文章向大家介绍实现 Promise.all,主要包括实现 Promise.all使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Promise.all 允许定义的 Promise 按照数组传入,并依次执行 Promise 并将结果保存在一个列表中,返回一个Promise.

let p1 = new Promise((resolve, reject)=>{
    resolve("只要有爱,");
});

let p2 = new Promise((resolve, reject)=>{
    resolve("在哪里都是天堂!")
});

let p3 = Promise.reject("不要让恨遮蔽了双眼!");

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

Promise.all([p1, p2, p3]).then(res=>{
    console.log(res);
}).catch(err=>{
    console.log(err);
})

// output
// [ '只要有爱,', '在哪里都是天堂!' ]
// 不要让恨遮蔽了双眼!
Promise.myAll = function(promises){
    return new Promise((resolve, reject)=>{
        let res = [];
        promises.forEach((promise, index)=>{
            promise.then(data=>{
                res.push(data);
                if(index===promises.length-1){
                    resolve(res);
                }
            }).catch(err=>{
                reject(err);
            })
        });
    })
}

Promise.myAll([p1, p2]).then(res=>{
    console.log(res)
})

Promise.myAll([p1, p2, p3]).then(res=>{
    console.log(res);
}).catch(err=>{
    console.log(err);
})

原文地址:https://www.cnblogs.com/apple78/p/12979033.html