手写promiseall,实现promiseall方法

 

function promiseall(promisearr){
    if(!Array.isArray(promisearr)) return console.log('参数非数组')  // 判断是否为数组
    return new Promise((resolve,reject)=>{
        let result =[]  // 定义数组存放成功的结果
        for(let i=0;i<promisearr.length;i++){ // 遍历数组
            Promise.resolve(promisearr[i]).then((value)=>{  // 将数组里的每个Promise包装成一个成功的promise
                result.push(value);  // 如果promise是成功的,那么就把成功的值存入result数组
                if(i==promisearr.length-1) return resolve(result);   // 当遍历到最后一个promise时候,将result数组作为成功的值,并将promiseall的状态改为成功 
            },(err)=>{return reject(err)}) // 如果其中的promise是失败的,,则直接走失败的回调,并将promiseall的状态改为失败 
        };
        
    })
};
promiseall([Promise.resolve('1'),Promise.resolve('2'),Promise.resolve('3')]).then(
    (value)=>{console.log(value)},
    (reason)=>{console.log(reason)}
    )

 

 

posted @ 2022-02-13 23:49  haihaixhj  阅读(78)  评论(0)    收藏  举报