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:
- Intrare: Acceptă un obiect iterabil (de exemplu, un array) de promisiuni.
- Așteptare: Începe o "competiție" între toate promisiunile.
- Rezultat: De îndată ce oricare dintre promisiuni în obiectul iterabil se finalizează (fie se rezolvă, fie se respinge),
Promise.racese finalizează instantaneu cu același rezultat. - 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.