Introducción a la asincronía en JS
JavaScript es un lenguaje single-threaded (usa un solo hilo de ejecución principal). Esto significa que solo puede ejecutar una tarea a la vez. La asincronía permite que el programa continúe ejecutando otras instrucciones mientras espera que operaciones más lentas (por ejemplo, llamadas a APIs o lectura de archivos) finalicen.
success
La asincronía evita que la aplicación se “congele” mientras espera tareas externas.
Por qué es importante
- JavaScript se usa en entornos donde la interfaz no puede bloquearse (navegadores).
- Muchas operaciones son lentas: peticiones HTTP, acceso a bases de datos, timers, etc.
- Permite escribir aplicaciones rápidas, fluidas y escalables.
Modelo de concurrencia: Event Loop
JavaScript utiliza un event loop (bucle de eventos) para manejar asincronía:
- Ejecuta el código principal en la call stack (pila de ejecución).
- Cuando encuentra tareas asincrónicas (por ejemplo
setTimeoutofetch), las delega a APIs del navegador o de Node.js. - Cuando estas tareas terminan, sus callbacks se encolan en la callback queue (cola de tareas).
- El event loop verifica si la pila está vacía y ejecuta lo que está en la cola.
Ejemplo con setTimeout
console.log('1. Inicio');
setTimeout(() => {
console.log('2. Callback asincrónico');
}, 2000);
console.log('3. Fin');
Salida:
1. Inicio
3. Fin
2. Callback asincrónico
La función setTimeout se ejecuta después de que el resto del código ha terminado, no bloquea el flujo principal.
Representación visual

Flujo asincrónico en JavaScript
Tipos de operaciones asincrónicas comunes
- Timers:
setTimeout,setInterval - Peticiones a APIs: fetch, XMLHttpRequest, librerías como Axios
- Operaciones en disco o base de datos: en Node.js
- Promesas y async/await
Casos reales
- Aplicaciones web que consumen APIs (e-commerce, redes sociales).
- Procesamiento de archivos grandes en Node.js sin bloquear a otros usuarios.
- Reproductores de video/audio que descargan en segundo plano.
- Notificaciones en tiempo real con WebSockets.
Referencias
- Flanagan, D. (2020). JavaScript: The Definitive Guide (7th ed.). O’Reilly Media.
- Mozilla Developer Network. (s.f.). Concurrency model and Event Loop.
- TypeScript Handbook. (s.f.). Asynchronous Programming.
- Node.js Docs. (s.f.). Timers.
- Gupta, I. (2024). Promise Patterns vs Async/Await: A developer's Guide. Medium.