Promise.all è un metodo utilizzato in JavaScript per gestire molteplici promesse simultaneamente. Prende un array di promesse e restituisce una nuova promessa che si risolve solo quando tutte le promesse nell’array sono risolte, o se una promessa è rifiutata.
Ecco come si utilizza:
```
let promise1 = Promise.resolve(3);
let promise2 = 42;
let promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, ‘foo’);
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values);
// expected output: Array [3, 42, “foo”]
});
```
In questo esempio, `promise1`, `promise2` e `promise3` sono tutte promesse. Promise.all aspetterà che tutte e tre le promesse siano risolte prima di risolvere anch’esso. Il valore risolto di Promise.all sarà un array dei valori risolti di ciascuna promessa.
Se anche una singola promessa fallisce (viene rifiutata), allora Promise.all fallirà con il motivo della promessa rifiutata. Quindi, considera il seguente esempio:
```
let promise1 = Promise.resolve(3);
let promise2 = 42;
let promise3 = new Promise((resolve, reject) => {
setTimeout(reject, 100, ‘foo’);
});
Promise.all([promise1, promise2, promise3]).catch((reason) => {
console.log(reason);
// expected output: “foo“
});
```
In questo caso, `promise3` fallisce, quindi Promise.all fallisce con il motivo “foo”. Fornire un blocco .catch alla fine di Promise.all gestirà qualsiasi errore che si verifica in una delle promesse. Anche se le altre promesse si risolvono con successo, se una promessa fallisce, allora Promise.all fallirà.