promise.all any race简易实现

Promise.all() :任意一个 promise 被 reject ,就会立即被 reject ,并且 reject 的是第一个抛出的错误信息,只有所有的 promise 都 resolve 时才会 resolve 所有的结果
Promise.any() :任意一个 promise 被 resolve ,就会立即被 resolve ,并且 resolve 的是第一个正确结果,只有所有的 promise 都 reject 时才会 reject 所有的失败信息
Promise.race() :最快的那个 Promise的执行结果
1、Promise.all

const all = (arr) => {
    let count = 0
    let result = []
    return new Promise((resolve, reject) => {
        arr.forEach((item,index) => {
            Promise.resolve(item).then(res=>{
                result[index]=res
                count += 1
                count == arr.length && resolve(result)
            }).catch(reject)
        });
    })
}

2、Promise.any

const promises = [
    Promise.reject('ERROR A'),
    Promise.reject('ERROR B'),
    Promise.resolve('result2'),
]
const any = (arr) => {
    let count = 0
    let err = []
    return new Promise((resolve, reject) => {
        arr.forEach(item => {
            Promise.resolve(item).then(resolve).catch((error) => {
                err.push(error)
                count += 1
                if (count == arr.length) reject(err)
            })
        });
    })
}
any(promises).then((value) => {
    console.log('value: ', value)
}).catch((err) => {
    console.log('err: ', err)
})


3、Promise.race()

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