Skip to main content

Amores Asincrónicos: Callbacks, Promesas & Async/Await

javascript

Autor: Reynaldo Navedo

Publicado:

Ah, el amor asincrónico en el mundo de JavaScript: un tema tan emocionante y misterioso como una novela romántica. Hoy, queridos lectores, vamos a navegar juntos en este apasionante mar de asincronía y a descubrir cómo hacer que nuestro código no quede atrapado en la temida "Callback Hell" (Infierno de Callbacks).


Callbacks: El Flirteo Inicial

Los callbacks son como esos primeros mensajes de texto que te envía tu ligue. Pueden ser emocionantes, pero también pueden complicarse rápidamente. Aquí tienes un ejemplo simple de cómo funciona un callback:

function hacerAlgo(callback) { 
  // Simulamos una operación asincrónica 
  setTimeout(() => { 
    console.log("Hice algo"); 
    callback(); }, 1000); 
  } 

hacerAlgo(() => { console.log("Callback ejecutado"); }); 

Problemas de los Callbacks

  • Callback Hell: Cuando tienes callbacks dentro de callbacks, dentro de más callbacks... acabas en el infierno llamado callbacks, querido amigo.


Promesas: Llevándolo al Siguiente Nivel

Las promesas son como pasar de mensajes de texto a citas en la vida real. Son un compromiso más serio y te dan más control.

function hacerAlgoPromesa() { 
  return new Promise((resolve, reject) => { 
    setTimeout(() => { 
      console.log("Hice algo con una promesa"); 
      resolve(); }, 1000); }); 
} 

hacerAlgoPromesa() 
  .then(() => { console.log("Promesa resuelta"); }) 
  .catch(() => { console.log("Promesa rechazada"); }); 

Ventajas de las Promesas

  • Mejor Manejo de Errores: Las promesas tienen una mejor estructura para manejar errores.
  • Encadenamiento: Puedes encadenar .then() para hacer que tu vida amorosa en el código sea más simple.


Async/Await: El Compromiso

Si los callbacks son el flirteo y las promesas son las citas, entonces async/await es como mudarse juntos. Es un compromiso a largo plazo que hace que todo sea más legible y manejable.

async function hacerAlgoAsync() { 
  console.log("Voy a hacer algo de forma asincrónica"); 
  await new Promise((resolve) => setTimeout(resolve, 1000)); 
  console.log("Hice algo de forma asincrónica"); 
} 
hacerAlgoAsync(); 

Por Qué Usar Async/Await

  • Legibilidad: Hace que tu código sea tan claro como una noche estrellada.
  • Manejo de Errores: Puedes usar try/catch como si estuvieras en un bloque síncrono.


Conclusión: ¿Quién Ganará tu Corazón?

Callbacks, Promesas y Async/Await, cada uno tiene su encanto y sus desafíos. Al final, eres tú quien decide con quién comprometerse. Pero recuerda, independientemente de tu elección, siempre hay esperanza de un código mejor y más limpio en el horizonte.

Ahora ve y conquista el mundo asincrónico de JavaScript. ¡Hasta la próxima, amantes del código!

Comparte este contenido