手写promise.all的要点:

    1. 在promise上面写,非在原型上写
    2. 参数为一个promise数组,返回值为一个promise对象
    3. 用数组记录结果
    4. 只要有一个reject就全部reject

    image.png
    Promise.all = function(list){
    let res=[];// 记录成功结果的数组
    let count=0; // 计数器:记录成功的次数
    //返回promise对象
    return new Promise((resolve,reject)=>{
    list.map((promise,index)=>{
    promise.then((x)=>{
    res[index]=x
    count++
    if(count===list.length)// count等于list长度时,表示全部成功
    resolve(res)
    },(reason)=>{
    reject(reason)
    })
    })
    })
    }