Sobes.tech
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);