1. Promise.all con async/await:Espera a que todas las promesas se resuelvan. Si alguna promesa es rechazada, se rechaza inmediatamente con el motivo del primer error.
async function ejemploPromiseAll() {
const p1 = Promise.resolve(3);
const p2 = 1337; // valor normal, se acepta directamente
const p3 = new Promise(resolve => setTimeout(resolve, 100, "foo"));
try {
const resultados = await Promise.all([p1, p2, p3]);
console.log(resultados); // [3, 1337, "foo"]
} catch (error) {
console.error("Error:", error);
}
}
ejemploPromiseAll();
2. Promise.any con async/await: Resuelve cuando la primera promesa se resuelve exitosamente. Rechaza solo si todas las promesas son rechazadas.
async function ejemploPromiseAny() {
const p1 = Promise.reject("Error 1");
const p2 = new Promise(resolve => setTimeout(resolve, 100, "Éxito 2"));
const p3 = new Promise(resolve => setTimeout(resolve, 200, "Éxito 3"));
try {
const resultado = await Promise.any([p1, p2, p3]);
console.log(resultado); // "Éxito 2"
} catch (error) {
console.error("Todas las promesas fallaron:", error);
}
}
ejemploPromiseAny();
3. Promise.race con async/await: Resuelve o rechaza tan pronto como la primera promesa se resuelva o rechace.
async function ejemploPromiseRace() {
const p1 = new Promise(resolve => setTimeout(resolve, 500, "Resultado p1"));
const p2 = new Promise((_, reject) => setTimeout(reject, 100, "Error p2"));
try {
const resultado = await Promise.race([p1, p2]);
console.log(resultado);
} catch (error) {
console.error("Error del primero en terminar:", error); // "Error p2"
}
}
ejemploPromiseRace();
4. Promise.allSettled con async/await: Espera a que todas las promesas terminen (resueltas o rechazadas) y devuelve un array con el estado y valor o razón de cada promesa.
async function ejemploPromiseAllSettled() {
const p1 = Promise.resolve("Éxito p1");
const p2 = Promise.reject("Error p2");
const p3 = Promise.resolve("Éxito p3");
const resultados = await Promise.allSettled([p1, p2, p3]);
resultados.forEach((result, index) => {
if (result.status === "fulfilled") {
console.log(`Promesa ${index + 1} cumplida con valor: ${result.value}`);
} else {
console.log(`Promesa ${index + 1} rechazada con razón: ${result.reason}`);
}
});
}
ejemploPromiseAllSettled();
Comments