Junior
Co je Promise.race?
sobes.tech AI
Odpověď od AI
Promise.race — je metoda, která vrací nový slib. Tento nový slib je vyřešen nebo zamítnut se stejnou hodnotou (nebo příčinou) jako první slib z předaného iterovatelného objektu (obvykle pole), který byl dokončen.
Principy fungování:
- Vstup: Přijímá iterovatelný objekt (například pole) slibů.
- Čekání: Začíná "závod" mezi všemi sliby.
- Výsledek: Jakmile kterýkoli z slibů v iterovatelném objektu je dokončen (buď vyřešen nebo zamítnut),
Promise.raceokamžitě končí stejným výsledkem. - Ignorování: Výsledky všech ostatních slibů, které se dokončí později, jsou zcela ignorovány.
Příklad použití:
// Příklad slibu, který se vyřeší po 1 sekundě
const promise1 = new Promise((resolve) => setTimeout(() => resolve('První'), 1000));
// Příklad slibu, který se vyřeší po 500 milisekundách
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Druhý'), 500));
// Příklad slibu, který je zamítnut 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); // Zpracuje chybu 'Chyba'
});
V tomto příkladu se promise3 dokončí jako první (zamítnutí), takže Promise.race se ukončí chybou a spustí se blok .catch. Pokud by promise2 byla dokončena jako první (například za 10 ms), Promise.race by se vyřešila s hodnotou 'Druhý' a spustil by se blok .then.
Typické scénáře použití:
- Implementace časového limitu pro asynchronní operaci.
- Získání výsledku z nejrychlejšího zdroje dat mezi několika možnými.
- Zrušení konkurenčních asynchronních operací.