Una Promesa es un "Pagaré" (IOU) para un valor futuro. Previene el temido "Callback Hell" al aplanar el código anidado.
Consumiendo una Promesa
Simulando una solicitud de red de lanzamiento de moneda.
javascript
const lanzarMoneda = new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() > 0.5) resolve("¡Cara! Ganaste.");
else reject("¡Cruz! Perdiste.");
}, 1000);
});
console.log("Lanzando moneda...");
lanzarMoneda
.then(resultado => console.log("Éxito:", resultado))
.catch(err => console.error("Fallo:", err))
.finally(() => console.log("Juego Terminado."));Avanzado: Ejecución Paralela
La Analogía del Chef
Si necesitas Tostada Y Café:
Secuencial: Hacer tostada (esperar 2m). Luego hacer café (esperar 2m). Total: 4m.
Paralelo (Promise.all): Empezar tostada Y empezar café. Esperar ambos. Total: 2m.
javascript
const obtenerTostada = new Promise(r => setTimeout(() => r("Tostada"), 1000));
const obtenerCafe = new Promise(r => setTimeout(() => r("Café"), 1000));
console.log("Comenzando desayuno...");
Promise.all([obtenerTostada, obtenerCafe])
.then(([comida, bebida]) => {
console.log(`El desayuno está servido: ${comida} y ${bebida}`);
});