Middle+
Tətbiqi tapşırıq: URL-lərin massivini və eyni vaxtda sorğu limiti qəbul edən funksiya həyata keçirin və paralel icraatı məhdudlaşdıran fetch sorğuları həyata keçirin (eyni zamanda limit-dən çox sorğu olmamalıdır), nəticələri ilkin sıralamada qaytarın.
sobes.tech Süni İntellekt
AI-dan cavab
Məhdudiyyətlərlə birlikdə eyni vaxtda edilən fetch sorğularının sayını həll etmək üçün növbə istifadə edə və aktiv vədlərin sayını nəzarət edə bilərsiniz. Aşağıda async/await istifadə edən JavaScript-də bir tətbiq nümunəsi verilmişdir:
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()) // və ya res.json() vəzifəyə görə
.then(data => {
results[index] = data;
})
.catch(err => {
results[index] = err;
})
.finally(() => {
activeCount--;
next();
});
}
}
next();
});
}
Bu kodda, eyni vaxtda limit-dən çox sorğu başlamır və hər biri tamamlandıqdan sonra növbədəki növbəti başlanır. Nəticələr results massivində ilkin sırasına uyğun saxlanılır.