Async await y captura de errores
Clase 16 de 27 • Curso de Backend con Node.js: API REST con Express.js
Contenido del curso
- 5

¿Qué es una RESTful API?
04:36 - 6
¡Es tu turno: crea un tutorial!
02:16 - 7

GET: recibir parámetros
08:08 - 8

GET: parámetros query
12:41 - 9

Separación de responsabilidades con express.Router
11:50 - 10
Instalación de Postman o Insomia
01:12 - 11

POST: método para crear
10:25 - 12

PUT, PATCH y DELETE
05:46 - 13

Códigos de estado o HTTP response status codes
05:34
¿Cómo manejar asincronismo en servicios con Node.js?
Trabajar con servicios en Node.js implica, casi siempre, tratar con asincronismo, especialmente cuando nos conectamos a fuentes de datos externas como API de terceros, bases de datos como MongoDB o PostgreSQL, entre otros. Esto crea un "delay" debido a las conexiones. Aprender a manejar este asincronismo es crucial para evitar bloqueos en nuestras aplicaciones.
¿Qué rol juegan async y await?
Node.js se destaca por su capacidad de ejecutar operaciones de manera asíncrona, y la combinación de async y await simplifica mucho este proceso. Cualquier método que tenga la firma async se considera una promesa, lo que significa que se ejecuta de manera asíncrona.
Para comenzar a trabajar con asincronismo:
-
Definir métodos como asíncronos: Añade la palabra clave
asyncantes de la declaración de funciones o métodos, aunque actualmente no implementenawait. Esto las prepara para futuras conexiones con servicios externos asíncronos.async function nombreDelMetodo() { // lógica } -
Uso de await: Utiliza
awaitcuando llamas a una función que devuelve una promesa. Esto pausará la ejecución de la función hasta que la promesa se resuelva.async function obtenerDatos() { const resultado = await fetchDatosExterno(); // Continua con el procesamiento }
¿Cómo se emula la asincronía?
Aunque trabajamos en memoria y todo parece ocurrir de forma instantánea, podemos emular un comportamiento asíncrono para prepararnos. Por ejemplo, mediante la simulación de un retraso con setTimeout y las promesas:
async function obtenerProductos() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(this.products);
}, 5000); // Simula una latencia de 5 segundos
});
}
¿Cómo podemos manejar errores asíncronamente?
El uso de try...catch en funciones que usan async y await permite manejar errores de manera elegante. Cuando un error es lanzado dentro de un bloque try, el control pasa a la sección catch.
Por ejemplo, para un método que actualiza datos:
async function actualizarProducto(idProducto) {
try {
const producto = await buscarProducto(idProducto);
// Lógica para actualización
} catch (error) {
return response.status(404).json({ message: 'Producto no encontrado', error });
}
}
Ventajas del manejo asíncrono
- Mejora de rendimiento: Permite que otros procesos de la aplicación continúen ejecutándose mientras se espera la respuesta de un servicio externo.
- Escalabilidad: Las aplicaciones asíncronas manejan mejor las cargas grandes y simultáneas de usuarios.
- Elegancia en el manejo de errores: Facilita el uso de
try...catchpara controlar flujos de error sin interrumpir la ejecución del código.
El uso de async y await ayuda a gestionar las operaciones asíncronas de manera eficiente, permitiendo crear aplicaciones de Node.js más rápidas, escalables y manejables. ¡Imprescindible para cualquier desarrollador en el ecosistema de Node.js! Sigue explorando y aplicando estos conceptos en tus proyectos.