Sobes.tech
Junior — Middle

Care este diferența dintre funcțiile Promise.all și Promise.any în procesarea promisiunilor?

sobes.tech AI

Răspuns de la AI

Promise.all acceptă un array de promisiuni și returnează o nouă promisiune care:

  • se rezolvă atunci când toate promisiunile din array sunt finalizate cu succes, returnând un array de rezultate în aceeași ordine;
  • este respinsă dacă cel puțin una dintre promisiuni este respinsă, imediat cu eroarea acelei promisiuni.

Promise.any acceptă un array de promisiuni și returnează o promisiune care:

  • se rezolvă imediat ce oricare dintre promisiuni se finalizează cu succes, returnând rezultatul acelei promisiuni;
  • este respinsă dacă toate promisiunile sunt respinse, returnând un AggregateError cu erorile tuturor promisiunilor.

Exemplu:

const p1 = Promise.reject('Eroare 1');
const p2 = Promise.resolve('Succes 2');
const p3 = Promise.resolve('Succes 3');

Promise.all([p1, p2, p3])
  .then(console.log) // nu va fi apelat
  .catch(console.error); // va afișa 'Eroare 1'

Promise.any([p1, p2, p3])
  .then(console.log) // va afișa 'Succes 2'
  .catch(console.error);