Promise.allSettled
es un método en JavaScript que se utiliza para esperar a que todas las promesas en un conjunto hayan finalizado, sin importar si fueron resueltas o rechazadas. A diferencia de Promise.all
, no se detiene si alguna de las promesas falla, lo que permite manejar los resultados de cada una de ellas de manera individual.
Promise.allSettled
recibe como argumento un array de promesas y devuelve una nueva promesa que se resuelve cuando todas las promesas en el array han terminado. El resultado de Promise.allSettled
es un array de objetos que indican el estado (fulfilled
o rejected
) y el valor o la razón de cada promesa.
Es especialmente útil cuando se quiere manejar cada resultado de las promesas sin interrumpir el flujo si alguna falla.
const promesa1 = Promise.resolve('Éxito');
const promesa2 = Promise.reject('Error');
const promesa3 = Promise.resolve('Otro éxito');
Promise.allSettled([promesa1, promesa2, promesa3])
.then(resultados => {
resultados.forEach((resultado, index) => {
if (resultado.status === 'fulfilled') {
console.log(`Promesa ${index + 1} cumplida:`, resultado.value);
} else {
console.log(`Promesa ${index + 1} rechazada:`, resultado.reason);
}
});
});
Promesa 1 cumplida: Éxito
Promesa 2 rechazada: Error
Promesa 3 cumplida: Otro éxito
const promesas = [
Promise.resolve('Primera promesa'),
Promise.reject('Segunda promesa falló'),
Promise.resolve('Tercera promesa')
];
// Con Promise.all
Promise.all(promesas)
.then(result => console.log('Resultado:', result))
.catch(error => console.log('Error en alguna promesa:', error));
// Con Promise.allSettled
Promise.allSettled(promesas)
.then(resultados => console.log('Resultados de todas las promesas:', resultados));
Puedes consultar más información sobre Promise.allSettled
en la documentación oficial de MDN.
Jorge García
Fullstack developer