JavaScript实现异步请求并发数限制

var count=4,queue=[],isRun=false,r=0;//异步请求并发数限制,队列请求数组,是否在队列里请求,模拟不同的返回值

//使用setTimeout模拟异步请求

function request(){

return new Promise((resolve, reject)=> {

r++;

setTimeout(()=> {

resolve("成功"+r)

},1000)

})

}

//  连续点击触发请求

function clickMe(){

queue.push(request(r++));

if(!isRun&&queue.length>0){

isRun=true; processMulti();

}}

function processMulti(){

let arra=[];

for(let i=0;i<count;i++) {

let item=queue.shift();

if(item) {

arra.push(item);

} }

if(arra.length>0){

Promise.all(arra).then(res=>{ console.log(res) processMulti() })

}else { isRun=false; } }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容