JavaScript之手写Promise.all()

62 阅读1分钟

Promise.all方法

Promise.all() 方法是一个静态方法,这意味着它属于整个类,而不是绑定到该类的任何特定实例。它接受可迭代的 Promise 作为输入并返回单个 Promise 对象。

Promise.all() 方法返回一个新的 Promise。如果传递给该方法的所有承诺都已成功解析,则此新承诺将解析为已确定承诺值的数组。一旦通过的承诺之一被拒绝,这个新的承诺也将被拒绝。

Promise.myAll = function(params){
    let res,rej
    const i = 0
    const array = []
    const fullfilled = 0
    const p = new Promise((reslove,rejecct)=>{
        res = reslove
        rej = reject
    })
    for(const item of params){
        const index = i
        i++
        Promise.reslove(item).then(e=>{
            array[index] = e
            fullfilled++
            if(fullfilled == i){
                return res(array)
            }
        },rej)
    }
    if(i == 0){
        return res([])
    }
    return p
}