Middle+
Практиական խնդիր՝ ստեղծել ֆունկցիա, որը ընդունում է URL-ների զանգված և միաժամանակյա հարցումների սահմանափակում, և իրականացնում է fetch-հարցումներ՝ սահմանափակելով պառլելային կատարմանը (ոչ ավելի, քան limit հարցումներ միաժամանակ), վերադարձնելով արդյունքները սկզբնական կարգով։
sobes.tech AI
Պատասխան AI-ից
Որպես լուծում միաժամանակյա fetch հարցումների քանակի սահմանափակման խնդրին, կարելի է օգտագործել հերթ և վերահսկել ակտիվ խոստումների քանակը: Ստորև ներկայացված է JavaScript-ով async/await օգտագործելով իրականացման օրինակ՝
async function limitedFetch(urls, limit) {
const results = new Array(urls.length);
let activeCount = 0;
let currentIndex = 0;
return new Promise((resolve, reject) => {
function next() {
if (currentIndex === urls.length && activeCount === 0) {
resolve(results);
return;
}
while (activeCount < limit && currentIndex < urls.length) {
const index = currentIndex++;
activeCount++;
fetch(urls[index])
.then(res => res.text()) // կամ res.json() ըստ առաջադրանքի
.then(data => {
results[index] = data;
})
.catch(err => {
results[index] = err;
})
.finally(() => {
activeCount--;
next();
});
}
}
next();
});
}
Այս կոդում, մենք չսկսենք ավելի քան limit հարցում միաժամանակ, և յուրաքանչյուր ավարտից հետո սկսում ենք հաջորդը հերթից: Ներգրավված արդյունքները պահվում են results զանգվածում սկզբնական կարգով։