Skip to content

手撕Promise.all()与Promise.race()

January 20, 2023 | 05:15 PM

手撕Promise.all()与Promise.race()

实现Promise.all()

到这里,Promise.all()便手撕完成了

实现Promise.race()

Promise.race 从字面意思理解就是赛跑,以状态变化最快的那个 Promise 实例为准,最快的 Promise 成功 Promise.race 就成功,最快的 Promise 失败 Promise.race 就失败。

整体流程与Promise差不多,只是对数组中的Promise实例处理的逻辑不一样,这里我们需要将最快改变状态的Promise 结果作为Promise.race的结果,相对来说就比较简单了,代码如下:

Promise.MyRace=function(promises){
    return new Promise((resolve,reject)=>{
        //这里无需索引,只要可以循环出每一项即可
        for(const item of promises){
            Promise.resolve(item).then(resolve,reject)
        }
    })
}