Sobes.tech
Junior — Middle

Kāda ir atšķirība starp funkcijām Promise.all un Promise.any, apstrādājot solījumus?

sobes.tech AI

Atbilde no AI

Promise.all pieņem masīvu ar solījumiem un atgriež jaunu solījumu, kas:

  • tiek izpildīts, kad visi masīva solījumi veiksmīgi pabeidzas, atgriežot rezultātu masīvu tajā pašā secībā;
  • tiek noraidīts, ja vismaz viens solījums tiek noraidīts, uzreiz ar šī solījuma kļūdu.

Promise.any pieņem masīvu ar solījumiem un atgriež solījumu, kas:

  • tiek izpildīts, tiklīdz kāds no tiem veiksmīgi pabeidzas, atgriežot šī solījuma rezultātu;
  • tiek noraidīts, ja visi solījumi tiek noraidīti, atgriežot AggregateError ar visu solījumu kļūdām.

Piemērs:

const p1 = Promise.reject('Kļūda 1');
const p2 = Promise.resolve('Veiksme 2');
const p3 = Promise.resolve('Veiksme 3');

Promise.all([p1, p2, p3])
  .then(console.log) // netiks izsaukts
  .catch(console.error); // parādīs 'Kļūda 1'

Promise.any([p1, p2, p3])
  .then(console.log) // parādīs 'Veiksme 2'
  .catch(console.error);