Sobes.tech
Middle

¿Qué usabas antes de la aparición de Promise?

sobes.tech AI

Respuesta de la IA

Antes de la aparición de Promise, se utilizaban ampliamente los callbacks.

Esencia de los callbacks:

Una función se pasa a otra función como argumento y se ejecuta después de completar una operación determinada.

Ejemplo:

// Ejemplo de llamada a una operación asíncrona con callback
function fetchData(callback) {
  setTimeout(() => {
    const data = "Algún dato";
    callback(null, data); // El primer argumento es un error, el segundo es el resultado
  }, 1000);
}

fetchData((err, data) => {
  if (err) {
    console.error("Error al obtener datos:", err);
  } else {
    console.log("Datos recibidos:", data);
  }
});

Desventajas del uso exclusivo de callbacks:

  • Callback Hell (Infierno de callbacks): La cadena de operaciones asíncronas anidadas conduce a un código muy anidado y difícil de leer.
  • Dificultades en el manejo de errores: Es necesario pasar y verificar errores en cada nivel de anidamiento.
  • Falta de un enfoque estandarizado: Diferentes bibliotecas podían usar diferentes convenciones para callbacks.

Enfoques alternativos antes de Promise:

Antes de la aparición de Promise, además de los callbacks "puros", se usaban bibliotecas y patrones para gestionar la asincronía, como:

  • Bibliotecas asíncronas: Por ejemplo, async (para Node.js, pero también podía usarse en el navegador). Ofrecían utilidades para gestionar flujos asíncronos (ejecución paralela, ejecución secuencial).
  • Patrón Publisher/Subscriber (Pub/Sub): Para escenarios de interacción más complejos.
  • Emisores de eventos: En Node.js y en entornos de navegador (por ejemplo, EventEmitter).

Sin embargo, los callbacks seguían siendo la base para muchas operaciones asíncronas. Promise proporcionó una forma más estructurada, unificada y legible de trabajar con la asincronía, eliminando muchos problemas del "Callback Hell".