前端并发请求
concurReq(reqs,maxNum){
return new Promise((resolve,reject)=>{
if(reqs.length === 0){
resolve([]);
return;
}
const results = [];
let index = 0;
let count = 0;
const request = async()=>{
if(index === reqs.length){
return
}
const i = index;
const {url,Arguments} = reqs[index];
index ++;
try {
const result = await AxiosGet(url,Arguments);
results[i] = result;
}
catch(err){
results[i] = err;
} finally {
count++;
if(count === reqs.length){
console.log('ok');
resolve(results)
}
request();
}
}
const times = Math.min(maxNum,reqs.length)
for(let i=0;i<times;i++){
request();
}
})
}