Sobes.tech
Junior

Promise.race nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Promise.race — bu metod, hansı ki, yeni vəd (promise) qaytarır. Bu yeni vəd, ötürülən iterasiya obyektində (adətən massiv) ilk tamamlanan vəd ilə eyni dəyər (və ya səbəb) ilə həll olunur və ya rədd edilir.

İş prinsipləri:

  1. Daxil olma: Bir iterasiya obyektini (məsələn, massiv) vədələr qəbul edir.
  2. Gözləmə: Bütün vədələr arasında "müsabiqə" başlayır.
  3. Nəticə: Hər hansı bir vəd (həll olunmuş və ya rədd olunmuş) tamamlandıqda, Promise.race dərhal eyni nəticə ilə yekunlaşır.
  4. Yadda saxlamama: Sonradan tamamlanan digər vədələrin nəticələri tamamilə nəzərə alınmır.

İstifadə nümunəsi:

// 1 saniyə sonra həll olunan vəd nümunəsi
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Birinci'), 1000));

// 500 millisekondiyada həll olunan vəd nümunəsi
const promise2 = new Promise((resolve) => setTimeout(() => resolve('İkinci'), 500));

// 300 millisekondiyada rədd olunan vəd nümunəsi
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Xəta')), 300));

Promise.race([promise1, promise2, promise3])
  .then((value) => {
    console.log(value); // 'Xəta' göstərəcək
  })
  .catch((error) => {
    console.error(error.message); // Xətanı işləyəcək
  });

Bu nümunədə, promise3 ilk tamamlanır (rədd edilir), ona görə də Promise.race xəta ilə yekunlaşır və .catch bloku icra olunur. Əgər promise2 ilk tamamlanmış olsaydı (məsələn, 10 ms-də), onda Promise.race 'İkinci' ilə həll olunardı və .then bloku icra olunardı.

Tipik istifadə ssenariləri:

  • Asinxron əməliyyat üçün zaman aşımı tətbiqi.
  • Bir neçə mümkün mənbədən ən sürətli nəticəni alma.
  • Rəqabət edən asinxron əməliyyatların ləğvi.