Middle
//Bir fonksiyon uygula // promiseAllLimit(tasks: Array<() => Promise<unknown>>, limit: number): Promise<any[]>, //maksimum eşzamanlı istek sayısı ile promise'ları çalıştırır.
sobes.tech yapay zeka
AI'dan gelen yanıt
promiseAllLimit fonksiyonu, aynı anda çalışan sözde (promisler döndüren fonksiyonlar) sayısını sınırlayarak görevleri çalıştırmaya olanak tanır. Bu, örneğin, ağı veya API'yi aşırı yüklememek için faydalıdır.
Uygulama örneği:
function promiseAllLimit(tasks, limit) {
return new Promise((resolve, reject) => {
const results = [];
let running = 0;
let index = 0;
let resolvedCount = 0;
function runNext() {
if (resolvedCount === tasks.length) {
resolve(results);
return;
}
while (running < limit && index < tasks.length) {
const currentIndex = index;
const task = tasks[currentIndex];
index++;
running++;
task()
.then(result => {
results[currentIndex] = result;
})
.catch(err => {
reject(err);
})
.finally(() => {
running--;
resolvedCount++;
runNext();
});
}
}
runNext();
});
}
Burada, aynı anda limit kadar görev başlatıyoruz ve her tamamlandığında bir yenisini başlatıyoruz, böylece tüm görevler tamamlanana kadar devam ediyoruz. Sonuçlar, başlangıçta verilen görevlerin sırasına göre bir dizide saklanır.