对promise.all底层的实现的研究
1.Promise.all(iterable)返回一个新的Promise实例,此实例在iterable参数内素有的Promise都fulfilled或者参数中不包含Promise时,状态变成fulfilled。 如果参数中Promise有一个失败rejected ,此实例回调失败,失败原因的是第一个失败Promise的返回结果
let p = Promise.all([m1,m2,m3])
Promise.all=function (promise) {
    return new promise((resolve,reject)=>{
        let index=0
        let result =[]
        if(promise.length===0){
            resolve(result)
        }else {
            function processValue(i,data) {
           result[i]=data
                if(++i===promise.length){
                    resolve(result)
                }
            }
         for (let i=0 ;i<promise.length;i++){
             Promise.resolve(promise[i]).then((data)=>{
                  processValue(i,data)
             },(err)=>{
                 reject(err)
                 return
                 }
             )
         }
        }
    })
}
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号