Junior — Middle
Jaka jest różnica między funkcjami Promise.all a Promise.any podczas obsługi obietnic?
sobes.tech AI
Odpowiedź od AI
Promise.all przyjmuje tablicę obietnic i zwraca nową obietnicę, która:
- zostanie rozwiązana, gdy wszystkie obietnice w tablicy zakończą się sukcesem, zwracając tablicę wyników w tej samej kolejności;
- zostanie odrzucona, jeśli przynajmniej jedna z obietnic zostanie odrzucona, natychmiast z błędem tej obietnicy.
Promise.any przyjmuje tablicę obietnic i zwraca obietnicę, która:
- zostanie rozwiązana tak szybko, jak którakolwiek z obietnic zakończy się sukcesem, zwracając wynik tej obietnicy;
- zostanie odrzucona, jeśli wszystkie obietnice zostaną odrzucone, zwracając AggregateError z błędami wszystkich obietnic.
Przykład:
const p1 = Promise.reject('Błąd 1');
const p2 = Promise.resolve('Sukces 2');
const p3 = Promise.resolve('Sukces 3');
Promise.all([p1, p2, p3])
.then(console.log) // nie zostanie wywołane
.catch(console.error); // wyświetli 'Błąd 1'
Promise.any([p1, p2, p3])
.then(console.log) // wyświetli 'Sukces 2'
.catch(console.error);