Sobes.tech
Junior — Middle

Qual è la differenza tra le funzioni Promise.all e Promise.any nella gestione delle promesse?

sobes.tech AI

Risposta dell'AI

Promise.all prende un array di promesse e ne restituisce una nuova che:

  • si risolve quando tutte le promesse dell'array vengono completate con successo, restituendo un array di risultati nello stesso ordine;
  • si rifiuta se almeno una delle promesse viene rifiutata, immediatamente con l'errore di quella promessa.

Promise.any prende un array di promesse e ne restituisce una che:

  • si risolve non appena una sola delle promesse si completa con successo, restituendo il risultato di quella promessa;
  • si rifiuta se tutte le promesse vengono rifiutate, restituendo un AggregateError con gli errori di tutte le promesse.

Esempio:

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

Promise.all([p1, p2, p3])
  .then(console.log) // non verrà chiamato
  .catch(console.error); // mostrerà 'Errore 1'

Promise.any([p1, p2, p3])
  .then(console.log) // mostrerà 'Successo 2'
  .catch(console.error);