Sobes.tech
Junior

Ce este Promise.race?

sobes.tech AI

Răspuns de la AI

Promise.race — este o metodă care returnează o nouă promisiune. Această nouă promisiune se rezolvă sau se respinge cu aceeași valoare (sau motiv) ca și prima promisiune din obiectul iterabil transmis (de obicei un array) care s-a finalizat.

Principii de funcționare:

  1. Intrare: Acceptă un obiect iterabil (de exemplu, un array) de promisiuni.
  2. Așteptare: Începe o "competiție" între toate promisiunile.
  3. Rezultat: De îndată ce oricare dintre promisiuni în obiectul iterabil se finalizează (fie se rezolvă, fie se respinge), Promise.race se finalizează instantaneu cu același rezultat.
  4. Ignorare: Rezultatele tuturor celorlalte promisiuni, care se finalizează mai târziu, sunt complet ignorate.

Exemplu de utilizare:

// Exemplu de promisiune care se rezolvă după 1 secundă
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Primul'), 1000));

// Exemplu de promisiune care se rezolvă după 500 de milisecunde
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Al doilea'), 500));

// Exemplu de promisiune care este respinsă după 300 de milisecunde
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Eroare')), 300));

Promise.race([promise1, promise2, promise3])
  .then((value) => {
    console.log(value); // Va afișa 'Eroare'
  })
  .catch((error) => {
    console.error(error.message); // Va trata eroarea 'Eroare'
  });

În acest exemplu, promise3 se finalizează primul (este respins), deci Promise.race se va finaliza cu o eroare, iar blocul .catch va fi executat. Dacă promise2 s-ar fi finalizat primul (de exemplu, în 10 ms), atunci Promise.race s-ar fi rezolvat cu valoarea 'Al doilea', și s-ar fi executat blocul .then.

Scenarii tipice de utilizare:

  • Implementarea unui timeout pentru o operație asincronă.
  • Obținerea rezultatului de la cea mai rapidă sursă de date dintre mai multe.
  • Anularea operațiilor asincrone concurente.