Sobes.tech
Junior — Middle

Kuo skiriasi Promise.all ir Promise.any funkcijos apdorojant pažadus?

sobes.tech AI

Atsakymas iš AI

Promise.all priima pažadų masyvą ir grąžina naują pažadą, kuris:

  • išsprendžiamas, kai visi masyvo pažadai sėkmingai užbaigiami, grąžindamas rezultatų masyvą toje pačioje tvarkoje;
  • atmetamas, jei bent vienas pažadas yra atmestas, iš karto su to pažado klaida.

Promise.any priima pažadų masyvą ir grąžina pažadą, kuris:

  • išsprendžiamas, kai bet kuris iš jų sėkmingai užbaigiasi, grąžindamas to pažado rezultatą;
  • atmetamas, jei visi pažadai yra atmesti, grąžindamas AggregateError su visų pažadų klaidomis.

Pavyzdys:

const p1 = Promise.reject('Klaida 1');
const p2 = Promise.resolve('Sėkmė 2');
const p3 = Promise.resolve('Sėkmė 3');

Promise.all([p1, p2, p3])
  .then(console.log) // nebus iškviestas
  .catch(console.error); // išves 'Klaida 1'

Promise.any([p1, p2, p3])
  .then(console.log) // išves 'Sėkmė 2'
  .catch(console.error);