function getRequest(urls,maxNum){
return new Promise((resolve)={
if(urls.length===0){
resolve([]);
return
}
const results = [];
let index = 0;//下一个请求url数组的索引
let count = 0; // 当前请求完成数量
async function request(){
if(index==urls.length){
return
}
const i= index;
const url = urls[index];
index++;
try{
const resp = await fetch(url);
results[i] = resp;
}catch(err){
results[i] = err;
}finally{
count++;
if(count===urls.length){
resolve(results)
}
request();
}
}
const times = Math.min(maxNum,urls.length);
for(let i of times){
request();
}
})
}
promise并发请求
最新推荐文章于 2023-07-20 09:23:08 发布
该函数实现了一个基于Promise的异步请求管理器,它接受URL数组和最大并发数作为参数。当请求完成后,会按顺序发起新的请求,直到所有请求完成。如果遇到错误,请求的结果将被存储为错误对象。最后,当所有请求处理完毕,返回一个包含每个URL响应或错误的数组。
摘要由CSDN通过智能技术生成