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);