Introducción al Asincronismo
JavaScript es un lenguaje de programación de un solo hilo (single-threaded), lo que significa que solo puede ejecutar una tarea a la vez. Sin embargo, muchas operaciones como peticiones de red, lectura de archivos o temporizadores toman tiempo. El asincronismo permite que estas operaciones se ejecuten sin bloquear el resto del código.El Problema: Código Bloqueante
Cuando ejecutas una operación pesada de forma síncrona, bloqueas toda la aplicación:heavyFunction() se ejecuta, todo está bloqueado:
- La interfaz no responde
- No puedes hacer click en otros botones
- La página se congela
La Solución: Código Asíncrono
Las operaciones asíncronas permiten que el código pesado se ejecute “en segundo plano” sin bloquear:setTimeout: Tu Primera Función Asíncrona
setTimeout ejecuta una función después de un retraso especificado (en milisegundos):
¿Por qué no se bloquea?
Encuentra setTimeout
En lugar de esperar 2 segundos, JavaScript:
- Programa la función para ejecutarse después
- Continúa inmediatamente con la siguiente línea
El Event Loop
JavaScript usa un event loop (bucle de eventos) para manejar asincronismo:Cómo Funciona
- Call Stack: Donde se ejecuta el código actualmente
- Web APIs: Donde viven las funciones asíncronas (setTimeout, fetch, etc.)
- Callback Queue: Cola de funciones listas para ejecutarse
- Event Loop: Mueve funciones de la cola al call stack cuando está vacío
Esto explica por qué
setTimeout(fn, 0) no ejecuta la función inmediatamente - debe esperar a que el call stack esté vacío.Operaciones Asíncronas Comunes
Temporizadores
setTimeout(), setInterval()Peticiones de Red
fetch(), XMLHttpRequestEventos
Clicks, teclado, mouse
Sistema de Archivos
Lectura/escritura (en Node.js)
Por Qué Necesitamos Asincronismo
Peticiones HTTP
Peticiones HTTP
Cuando pides datos a un servidor, puede tomar segundos. Sin asincronismo, tu aplicación se congelaría esperando la respuesta.
Interactividad
Interactividad
Los usuarios esperan que las interfaces respondan instantáneamente. El asincronismo permite que la UI permanezca responsive mientras se procesa trabajo pesado.
Operaciones Paralelas
Operaciones Paralelas
Puedes iniciar múltiples operaciones asíncronas al mismo tiempo:
Patrones Asíncronos en JavaScript
JavaScript ofrece tres formas principales de manejar asincronismo:- Callbacks - La forma original (puede llevar a “callback hell”)
- Promises - Una mejor forma de manejar operaciones asíncronas
- Async/Await - La forma más moderna y legible
Próximos Pasos
Callbacks
Aprende el patrón más básico de asincronismo
Promises
Descubre una mejor forma de manejar asincronismo
Async/Await
La forma más moderna y limpia
Ejemplos Prácticos
Ve ejemplos completos en acción