Nello script precedente abbiamo iniziato un'analisi della programmazione asincrona in JavaScript utilizzando le Promise. Ora vedremo alcuni metodi utili per gestire più promise nello stesso momento.
Promise.all
Unisce tutte le Promise in una sola contenente un array di risultati delle singole.
const p1 = Promise.resolve("Ciao");
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, 'Mondo');
});
Promise.all([p1, p2]).then((values) => {
console.log(values); // ["Ciao", "Mondo"]
});
Promise.race
Fornendo un'array di Promise, restituisce una Promise che si risolverà solo con il valore della più veloce.
const p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, 'Ciao');
});
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'Mondo');
});
Promise.race([p1, p2]).then((value) => {
console.log(value); // "Ciao"
});
Promise.any
A seguito della fornitura di un array di Promise, restituisce la prima riuscita. Nel caso tutte falliscano anche la promise risultante fallirà.
const p0 = Promise.reject(0);
const p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, 'Ciao');
});
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'Mondo');
});
Promise.race([p0, p1, p2]).then((value) => {
console.log(value); // "Ciao"
});
Promise.allSettled
Questo metodo è molto simile al metodo all, ma permette l'esecuzione di tutte le Promise, indipendentemente dal fallimento di una o più.
const p0 = Promise.reject("Fallimento");
const p1 = Promise.resolve("Ciao");
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, 'Mondo');
});
Promise.allSettles([p0, p1, p2]).then((values) => {
values.forEach((value) => console.log(value)
// Object { status: "rejected", reason: "Fallimento" }
// Object { status: "fulfilled", value: "Ciao" }
// Object { status: "fulfilled", value: "Mondo" }
});
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Ottimizzare la content-visibility in CSS specificando lo spazio da occupato dall'area non renderizzata
Creare comandi nella dashboard .NET Aspire
Modificare lo stile in una QuickGrid Blazor
Eliminare record doppi in Sql Server
Gestire gli errori nelle Promise JavaScript con try()
Evitare memory leaks nelle closure JavaScript
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Gestire trasferimenti cloud con Azure Storage Mover
DevSecOps per .NET: dalla teoria alla pratica
Integrare Agenti A2A in Azure API Management
Configurare OpenTelemetry per Application Insights su ASP.NET Core




