Middle+
Pratik görev: URL dizisi ve eşzamanlı istek limiti alan bir fonksiyon uygulayın ve paralel yürütmeyi sınırlayan fetch istekleri yapın (aynı anda limit'ten fazla istek olmamalı), sonuçları orijinal sırayla döndürün.
sobes.tech yapay zeka
AI'dan gelen yanıt
Eş zamanlı fetch isteği sayısını sınırlama sorununu çözmek için bir kuyruk kullanabilir ve aktif promise sayısını kontrol edebilirsiniz. İşte async/await kullanarak JavaScript'te bir uygulama örneği:
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()) // veya res.json() göreve bağlı olarak
.then(data => {
results[index] = data;
})
.catch(err => {
results[index] = err;
})
.finally(() => {
activeCount--;
next();
});
}
}
next();
});
}
Bu kodda, aynı anda en fazla limit istek başlatılır ve her tamamlandığında, sıradaki istek başlatılır. Sonuçlar, orijinal sırasına göre results dizisine kaydedilir.