Junior
Czym jest Promise.race?
sobes.tech AI
Odpowiedź od AI
Promise.race — to metoda, która zwraca nową obietnicę. Ta nowa obietnica zostanie rozwiązana lub odrzucona z tą samą wartością (lub przyczyną), co pierwsza obietnica z przekazanego obiektu iterowalnego (zwykle tablicy), która się zakończyła.
Zasady działania:
- Wejście: Przyjmuje obiekt iterowalny (np. tablicę) obietnic.
- Oczekiwanie: Rozpoczyna "zawody" między wszystkimi obietnicami.
- Wynik: Gdy dowolna z obietnic w obiekcie iterowalnym się zakończy (rozwiązana lub odrzucona),
Promise.racenatychmiast kończy się tym samym wynikiem. - Ignorowanie: Wyniki wszystkich innych obietnic, które zakończyły się później, są całkowicie ignorowane.
Przykład użycia:
// Przykład obietnicy, która zostanie rozwiązana po 1 sekundzie
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Pierwsza'), 1000));
// Przykład obietnicy, która zostanie rozwiązana po 500 milisekundach
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Druga'), 500));
// Przykład obietnicy, która zostanie odrzucona po 300 milisekundach
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Błąd')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Wyświetli 'Błąd'
})
.catch((error) => {
console.error(error.message); // Obsłuży błąd 'Błąd'
});
W tym przykładzie promise3 kończy się jako pierwsza (odrzucona), więc Promise.race kończy się błędem, a blok .catch zostanie wykonany. Gdyby promise2 zakończyła się jako pierwsza (np. w 10 ms), to Promise.race rozwiązałoby się wartością 'Druga', a zostałby wykonany blok .then.
Typowe scenariusze użycia:
- Implementacja limitu czasu dla operacji asynchronicznej.
- Uzyskanie wyniku z najszybszego źródła danych spośród kilku możliwych.
- Anulowanie konkurencyjnych operacji asynchronicznych.