Junior
Čo je Promise.race?
sobes.tech AI
Odpoveď od AI
Promise.race — je metóda, ktorá vracia nový sľub. Tento nový sľub je vyriešený alebo zamietnutý s rovnakou hodnotou (alebo dôvodom) ako prvý sľub z odovzdaného iterovateľného objektu (zvyčajne pole), ktorý bol dokončený.
Princípy fungovania:
- Vstup: Prijíma iterovateľný objekt (napríklad pole) sľubov.
- Čakanie: Začína "súťaž" medzi všetkými sľubmi.
- Výsledok: Hneď ako ktorýkoľvek z sľubov v iterovateľnom objekte je dokončený (buď vyriešený alebo zamietnutý),
Promise.raceokamžite končí rovnakým výsledkom. - Ignorovanie: Výsledky všetkých ostatných sľubov, ktoré sa dokončia neskôr, sú úplne ignorované.
Príklad použitia:
// Príklad sľubu, ktorý sa vyrieši po 1 sekunde
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Prvý'), 1000));
// Príklad sľubu, ktorý sa vyrieši po 500 milisekundách
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Druhý'), 500));
// Príklad sľubu, ktorý je zamietnutý po 300 milisekundách
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Chyba')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Zobrazí 'Chyba'
})
.catch((error) => {
console.error(error.message); // Spracuje chybu 'Chyba'
});
V tomto príklade, promise3 sa dokončí ako prvá (zamietnutá), takže Promise.race sa ukončí chybou a vykoná sa blok .catch. Ak by promise2 bola dokončená prvá (napríklad za 10 ms), potom by Promise.race bola vyriešená s hodnotou 'Druhý' a vykonal by sa blok .then.
Typické scenáre použitia:
- Implementácia časového limitu pre asynchrónnu operáciu.
- Získanie výsledku z najrýchlejšieho zdroja dát medzi viacerými možnosťami.
- Zrušenie konkurenčných asynchrónnych operácií.