var count=4,queue=[],isRun=false,r=0;//異步請(qǐng)求并發(fā)數(shù)限制,隊(duì)列請(qǐng)求數(shù)組,是否在隊(duì)列里請(qǐng)求,模擬不同的返回值
//使用setTimeout模擬異步請(qǐng)求
function request(){
return new Promise((resolve, reject)=> {
r++;
setTimeout(()=> {
resolve("成功"+r)
},1000)
})
}
//? 連續(xù)點(diǎn)擊觸發(fā)請(qǐng)求
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; } }