Sobes.tech
Junior — Middle

Koja je razlika između funkcija Promise.all i Promise.any pri obradi obećanja?

sobes.tech АИ

Одговор од АИ

Promise.all uzima niz obećanja i vraća novo obećanje koje:

  • se rešava kada sva obećanja u nizu uspešno završe, vraćajući niz rezultata u istom redosledu;
  • se odbacuje ako je bar jedno od obećanja odbačeno, odmah sa greškom tog obećanja.

Promise.any uzima niz obećanja i vraća obećanje koje:

  • se rešava čim bilo koje od obećanja uspešno završi, vraćajući rezultat tog obećanja;
  • se odbacuje ako su sva obećanja odbačena, vraćajući AggregateError sa greškama svih obećanja.

Primer:

const p1 = Promise.reject('Greška 1');
const p2 = Promise.resolve('Uspeh 2');
const p3 = Promise.resolve('Uspeh 3');

Promise.all([p1, p2, p3])
  .then(console.log) // neće biti pozvano
  .catch(console.error); // prikazuje 'Greška 1'

Promise.any([p1, p2, p3])
  .then(console.log) // prikazuje 'Uspeh 2'
  .catch(console.error);