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; } }