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