Skip to main content

Callbacks

Un callback es una función que se pasa como argumento a otra función y se ejecuta después de que esa función termine su trabajo. Es el patrón más básico para manejar operaciones asíncronas en JavaScript.

¿Qué es un Callback?

Un callback es simplemente una función que se ejecuta “después” de otra operación:
Salida:

Desglose del Ejemplo

1

saludar acepta dos parámetros

  • nombre: un string
  • callback: una función que se ejecutará después
2

saludar hace su trabajo

Imprime el saludo con el nombre.
3

saludar ejecuta el callback

Llama a callback(), que ejecuta la función despedir.
Los callbacks son funciones regulares. Lo especial es cuándo y dónde se ejecutan.

Callbacks con Funciones Anónimas

No necesitas definir el callback por separado. Puedes usar una función anónima:
O con arrow functions (sintaxis moderna):

Callbacks Asíncronos

Los callbacks realmente brillan con operaciones asíncronas como setTimeout:

Callbacks con Parámetros

Los callbacks pueden recibir parámetros:

Callbacks para Manejo de Errores

Una convención común es pasar el error como primer parámetro del callback:
Este patrón “error-first callback” es muy común en Node.js y bibliotecas JavaScript.

El Problema: Callback Hell

Cuando necesitas realizar múltiples operaciones asíncronas en secuencia, los callbacks pueden volverse difíciles de manejar:
Problemas con este código:
  • Difícil de leer (forma de “pirámide”)
  • Difícil de mantener
  • Difícil de manejar errores
  • Difícil de agregar nuevos pasos
Este patrón se conoce como “Callback Hell” o “Pyramid of Doom”. Es una señal de que necesitas refactorizar tu código.

Un Ejemplo Más Real de Callback Hell

Cada nivel de indentación hace el código más difícil de seguir.

Buenas Prácticas con Callbacks

1. Usa Funciones con Nombre

En lugar de funciones anónimas anidadas:

2. Maneja Errores Apropiadamente

3. Mantén los Callbacks Simples

Callbacks en Funciones de Array

Los callbacks también se usan en métodos de array:

Cuándo Usar Callbacks

  • Operaciones asíncronas simples y únicas
  • Event listeners
  • Métodos de array (map, filter, forEach)
  • APIs que solo soportan callbacks
  • Múltiples operaciones asíncronas en secuencia
  • Lógica compleja de manejo de errores
  • Cuando necesitas coordinar múltiples operaciones asíncronas
  • En código moderno (usa Promises o async/await en su lugar)

La Evolución: De Callbacks a Promises

Los callbacks fueron la primera solución para el asincronismo en JavaScript, pero tienen limitaciones. Por eso se crearon las Promises, que resuelven muchos de los problemas de los callbacks.
En código nuevo, prefiere Promises o async/await sobre callbacks anidados. Sin embargo, entender callbacks es fundamental porque:
  • Muchas APIs aún los usan
  • Necesitas entenderlos para trabajar con código existente
  • Son la base para entender Promises y async/await

Próximos Pasos

Promises

Aprende cómo Promises mejoran el manejo asíncrono

Async/Await

La sintaxis más moderna para código asíncrono