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