Sobes.tech
Middle

Jaka jest różnica między Promise.all a Promise.any?

sobes.tech AI

Odpowiedź od AI

Promise.all oczekuje na wykonanie wszystkich obietnic w obiekcie iterowalnym. Jeśli wszystkie obietnice zostaną pomyślnie spełnione, zwraca obietnicę, która rozwiązuje się tablicą wyników w tej samej kolejności, co wejściowe obietnice. Jeśli przynajmniej jedna obietnica zostanie odrzucona, zwraca obietnicę odrzuconą błędem pierwszej odrzuconej obietnicy.

Promise.any oczekuje na wykonanie dowolnej z obietnic w obiekcie iterowalnym. Gdy tylko któraś z obietnic zostanie pomyślnie spełniona, zwraca obietnicę, która rozwiązuje się wartością tej obietnicy. Jeśli wszystkie obietnice zostaną odrzucone, zwraca obietnicę odrzuconą AggregateError, zawierającą tablicę błędów wszystkich odrzuconych obietnic.

Porównanie:

Kryterium Promise.all Promise.any
Warunek sukcesu Wszystkie obietnice zostaną pomyślnie spełnione Dowolna obietnica zostanie pomyślnie spełniona
Warunek błędu Co najmniej jedna obietnica zostanie odrzucona Wszystkie obietnice zostaną odrzucone
Wynik sukcesu Tablica wyników (w tej samej kolejności co wejściowe obietnice) Wartość pierwszej pomyślnie spełnionej obietnicy
Wynik błędu Błąd pierwszej odrzuconej obietnicy AggregateError z tablicą błędów wszystkich odrzuconych obietnic
Użycie Zależność od wszystkich operacji asynchronicznych Zależność od dowolnej operacji asynchronicznej