Middle
¿Por qué se introdujo la construcción async/await y cómo mejora el trabajo con código asíncrono?
sobes.tech AI
Respuesta de la IA
Async/await fue introducido para simplificar la escritura de código asíncrono, haciéndolo más legible y mantenible en comparación con los callbacks o promesas tradicionales.
Cómo mejora:
- Legibilidad: El código con
async/awaitparece síncrono, línea por línea, lo que facilita su comprensión. - Manejo de errores: Permite usar construcciones estándar como try/catch para manejar errores en código asíncrono, a diferencia de
.catch()en promesas. - Depuración: Los puntos de interrupción (breakpoints) funcionan igual que en código síncrono, facilitando el proceso de depuración.
- Menos "callback hell": Elimina el problema de callbacks anidados, que conduce a código ilegible.
Ejemplo:
Código con promesas:
// Ejemplo con promesas
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error fetching data:', error);
});
El mismo código con async/await:
// Ejemplo con async/await
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchData();
La construcción async/await está basada en promesas y es azúcar sintáctico para trabajar con ellas. La función marcada como async siempre devuelve una promesa. El operador await solo puede usarse dentro de funciones async y "espera" la resolución de la promesa, devolviendo su valor resuelto o generando una excepción en caso de error.