手写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 @   haihaixhj  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示