Thanks to visit codestin.com
Credit goes to github.com

Skip to content

promise.all 限制并发数量 #48

@nmsn

Description

@nmsn

原文:https://juejin.cn/post/7067885409677606943

现在提供10个id和请求函数(请求返回promise对象),现在要求你设置一个并发数(假设为3),达到并发设置效果。

async function run(){
    for (let i=0;i<idArray.length;i++){
        let promise = request(idArray[i]);
        promise.then((res)=>{
            console.log(`id${res}的请求已经处理完毕,当前并发为${pool.length}`);
            pool.splice(pool.indexOf(promise),1);
        })
        pool.push(promise);
        //这里是重点,当满了就阻塞
        if (pool.length==max){
            await Promise.race(pool);
        }
    }
}
run();

这种写法存在一个问题, Promise.race 会将其他执行过程中的任务舍弃

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions