function concurrentRequest(urls: string[], limit: number) {
if (urls.length === 0) {
return Promise.resolve([]);
}
return new Promise((resolve, reject) => {
let nextIdx = 0;
const result: any[] = [];
let count = 0;
async function _request() {
const i = nextIdx;
const url = urls[nextIdx];
nextIdx++;
const resp = await fetch(url);
result[i] = resp;
count++;
if (nextIdx < urls.length) {
_request();
}
if (count === urls.length) {
resolve(result);
}
console.log(result);
}
for (let i = 0; i < Math.min(urls.length, limit); i++) {
_request();
}
})
}