Async/Await
Async/Await es azúcar sintáctica sobre Promises que hace que el código asíncrono se vea y se comporte más como código síncrono. Es la forma más moderna y legible de manejar asincronismo en JavaScript.¿Qué es Async/Await?
Async/await son dos palabras clave que trabajan juntas:async: Declara que una función es asíncrona (retorna una Promise)await: Pausa la ejecución hasta que una Promise se resuelva
await solo puede usarse dentro de funciones async. Intentar usarlo fuera generará un error de sintaxis.Funciones Async
Una funciónasync siempre retorna una Promise:
Declaraciones de Funciones Async
- Función Regular
- Arrow Function
- Método de Objeto
- Event Listener
Usando Await
await pausa la ejecución de la función async hasta que la Promise se resuelva:
- Se imprime ”⏳ Cargando…”
await fetch()pausa hasta que la petición termineawait response.json()pausa hasta que el JSON se parsee- Se imprime el objeto de datos
- Se imprime ”✅ Listo”
Comparación: Promises vs Async/Await
Con Promises (.then)
Con Async/Await
- Más fácil de leer - parece código síncrono
- Menos anidación
- Manejo de errores más natural con try/catch
- Mejor para debugging (call stack más claro)
Manejo de Errores con Try/Catch
Usa bloquestry/catch para manejar errores en funciones async:
Try/Catch vs .catch()
- Try/Catch
- .catch()
- Sintaxis familiar
- Maneja errores síncronos y asíncronos
- Mejor para múltiples operaciones await
Ejecutar Promises en Paralelo
❌ Incorrecto: Secuencial (Lento)
✅ Correcto: Paralelo (Rápido)
Usando Promise.all() con Async/Await
Await en Ciclos
For Loop
Paralelo con map()
Ejemplo Completo: Carga de Datos de Usuario
Async/Await con .finally
Puedes usar.finally() con async/await:
Top-Level Await
En módulos ES6 modernos, puedes usarawait en el nivel superior (fuera de funciones async):
Top-level await solo funciona en módulos ES6 (
<script type="module"> o archivos .mjs en Node.js).Buenas Prácticas
1
Siempre usa try/catch
2
Ejecuta en paralelo cuando sea posible
3
No bloquees innecesariamente
Cuándo Usar Async/Await
✅ Usa Async/Await
✅ Usa Async/Await
- Código nuevo que escribas
- Múltiples operaciones asíncronas en secuencia
- Cuando necesitas lógica compleja con await
- Para mejor legibilidad del código
- Cuando necesitas usar try/catch
⚠️ Considera Promises
⚠️ Considera Promises
- Una sola operación asíncrona simple
- Cuando necesitas encadenar transformaciones
- APIs que esperan Promises como retorno
- Cuando Promise.all/race/etc. son más claros
Próximos Pasos
Fetch API
Usa async/await para hacer peticiones HTTP
Ejemplos Asíncronos
Ve ejemplos completos de código asíncrono