手写Promise的all和race

191 阅读1分钟
class MyPromise{
    static all(PromiseArr){
        let count = 0;
        let result = [];
        return new Promise((resolve, reject)=>{
            for(let i=0;i<PromiseArr.length;i++){
                Promise.resolve(PromiseArr[i]).then(res=>{
                     count++;
                     result[i] = res;
                     if(count == PromiseArr.length){
                         resolve(result);
                     }
                }, err => {
                    reject(err);
                })
            }
        })
    }
    static race(PromiseArr){
        return new Promise((resolve, reject) => {
            for(let i=0;i<PromiseArr.length;i++){
                Promise.resolve(PromiseArr[i]).then(
                res=>{
                    resolve(res);
                },err => {
                    reject(err);
                }
                )
            }
        })
    }
}

作者:Big shark@LX 链接:juejin.cn/post/700463…