const url = 'https://jsonplaceholder.typicode.com/todos/';
const list: any[] = [];
for (let index = 1; index <= 10; index++) {
list.push(`${url}${index}`)
}
concurRequest(list as any, 3).then(res => {
console.log(res);
})
function concurRequest(reqList = [], maxNum = 3) {
let result: any[] = [];
let index: number = 0;
let count: number = 0;//请求数量
if (reqList.length == 0) return Promise.resolve([]);
return new Promise((resolve, reject) => {
async function _request() {
const i = index;
const url = reqList[index];
index++;
try {
const response = await fetch(url);
const res = await response.json();
result[i] = res;
} catch (error) {
// function reget(num = 3) {
// return fetch(url).then(res => {
// result[i] = res;
// }).catch(err => num <= 0 ? Promise.reject(err) : reget(num - 1))
// }
result[i] = error;
} finally {
count++;
if (count == reqList.length) {
resolve(result)
}
if (index < reqList.length) {
_request();
}
}
}
for (let i = 0; i < maxNum; i++) {
_request();
}
})
}
JS篇之控制数据并发次数
最新推荐文章于 2024-07-31 16:33:32 发布