手写promise.all

41 阅读1分钟
const myPromiseAll = (list) => {
    // promise.all返回一个promise对象
    return new Promise((resolve, reject) => {
        let conunt = 0
        const result = []
        list.forEach((promiseItem, index) => {
            // list中每一个都是promise对象,处理结果
            promiseItem.then((res) => {
                result[index] = res
                count++
                if(conunt === list.length) {
                    // resolve方法将return的promise对象的状态转为fulFilled,并返回result
                    resolve(result)
                }
            }).catch((err) => {
               // promise对象有任何一个reject都会reject执行catch
               reject(err)
            })
        })
    })
}

image.png