问大佬一道前端题,如何解?

let doWork = (workid)=>{ 
    return new Promise(resolve=>{
        // 模拟大量任务
        setTimeout(()=>{
            console.log(workid);
            resolve(workid); 
        },10000*Math.random());
    }); 
}; 
// 请修改以下程序 
for(let i = 0; i < 30; ++i){ 
    doWork(i); 
}

doWork是个会占用有限资源(如网络连接数,CPU核数等)的函数,由于资源有限,最多只能同时运行3个doWork函数。现要执行30次doWork,请修改以下程序以满足限制#笔试题目##前端#
全部评论
这道题我也遇到过,当时面试官说的是浏览器请求数的并发限制,当时没有答出来。今天有时间查了资料实现如下: https://gist.github.com/upupming/cbc24ada6f99d41073397b3842cdd884 运行结果: ```txt start running 0 start running 1 start running 2 finished running 2 start running 3 finished running 0 start running 4 finished running 4 start running 5 finished running 1 start running 6 finished running 5 start running 7 finished running 3 start running 8 finished running 7 start running 9 finished running 6 start running 10 finished running 8 start running 11 finished running 9 start running 12 finished running 11 start running 13 finished running 10 start running 14 finished running 12 start running 15 finished running 13 start running 16 finished running 16 start running 17 ... `` 参考资料:https://gist.github.com/jcouyang/632709f30e12a7879a73e9e132c0d56b
1 回复 分享
发布于 2020-05-14 21:49

相关推荐

评论
3
收藏
分享
牛客网
牛客企业服务