Sobes.tech
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.