Async await javascript

Promesa de espera en Javascript

El código asíncrono puede ser difícil de seguir cuando tiene muchas cosas en marcha. async y await son dos palabras clave que pueden ayudar a que el código asíncrono se lea más como un código síncrono. Esto puede ayudar a que el código se vea más limpio mientras se mantienen los beneficios del código asíncrono.

El segundo ejemplo se parece mucho más al tipo de funciones que estás acostumbrado a escribir. Sin embargo, ¿notaste la palabra clave async antes de la declaración de la función? ¿Y la palabra clave await antes de server.getPeople()?

La palabra clave async también se puede utilizar con cualquiera de las formas en que se puede crear una función. Dicho de otro modo: es válido utilizar una función asíncrona en cualquier lugar donde se pueda utilizar una función normal. A continuación verás algunos ejemplos que pueden no ser intuitivos. Si no los entiendes, vuelve y echa un vistazo cuando hayas terminado con las asignaciones.

Manejar los errores en las funciones asíncronas es muy fácil. Las promesas tienen el método .catch() para manejar las promesas rechazadas, y como las funciones async sólo devuelven una promesa, puedes simplemente llamar a la función, y añadir un método .catch() al final.

Javascript espera la función async

Dado que los siguientes pasos tienen que ocurrir dentro de un .then(), cada acción async anida aún más nuestro código, lo que añade una sobrecarga cognitiva y puede hacer que el código sea difícil de refactorizar y mantener a medida que pasa el tiempo.Las funciones async hacen que las Promesas sean más fáciles de usar… Para facilitar el trabajo con Promises, las funciones async introducen las palabras clave async y await que nos permiten obtener los beneficios de las Promises – esperar a que se complete un proceso async antes de continuar – sin la sobrecarga mental de encadenar llamadas .then y anidar Promises.Refactoricemos el código que hemos escrito hasta ahora en este artículo utilizando funciones async para que sea un poco más fácil de leer:async function getData() {

  Localhost info php

Si ejecutas esto en tu consola, verás que la Cosa 1 y la Cosa 2 se completan casi al mismo tiempo.Si refactorizamos para usar funciones async, nuestro código podría tener este aspecto:// no hagas esto en tu código real; ¡es lento!

Esto parece bonito y limpio, pero si lo ejecutamos en nuestra consola nos daremos cuenta de un problema: ¡el código ahora tarda el doble en ejecutarse! Las promesas se ejecutan en paralelo porque no les importa lo que ocurra fuera de ellas – por eso sólo podemos acceder a su contenido dentro de un .then. Esto significa que tanto asyncThing1() como asyncThing2() se ejecutan al mismo tiempo en nuestro primer ejemplo.En las funciones async, await bloquea la ejecución de cualquier código que le siga hasta que la Promise se haya resuelto, lo que significa que nuestro código refactorizado ni siquiera inicia asyncThing2() hasta que asyncThing1() se haya completado – eso no es bueno. ¡Sin embargo, hay buenas noticias: podemos arreglar esto sin renunciar a los beneficios de las funciones asíncronas! // ✅ hacer esto – ¡el código asíncrono se ejecuta en paralelo!

  FIX: Planes de mantenimiento de SQL Server

Async await javascript ejemplo

Así, async asegura que la función devuelve una promesa, y envuelve las no promesas en ella. Bastante simple, ¿verdad? Pero no sólo eso. Hay otra palabra clave, await, que sólo funciona dentro de las funciones async, y es bastante genial.

Al igual que promise.then, await nos permite utilizar objetos then (los que tienen un método callable then). La idea es que un objeto ajeno puede no ser una promesa, pero sí compatible con la promesa: si soporta .then, eso es suficiente para usarlo con await.

Si await obtiene un objeto no-promesa con .then, llama a ese método proporcionando las funciones incorporadas resolve y reject como argumentos (tal y como hace un ejecutor Promise normal). Luego await espera hasta que una de ellas sea llamada (en el ejemplo anterior ocurre en la línea (*)) y luego procede con el resultado.

Si nos olvidamos de añadir .catch allí, entonces obtendremos un error de promesa no manejada (visible en la consola). Podemos atrapar este tipo de errores utilizando un manejador de eventos global unhandledrejection como se describe en el capítulo Manejo de errores con promesas.

Función asíncrona javascript

Quería ampliar ese artículo hablando un poco más sobre cómo puedes usar una combinación de async / await, Promises, y la capacidad de async de devolver una Promise para mantener tu código async lo más limpio posible.

Esto está bien… y funciona, pero no es muy DRY (no te repitas). Rápidamente puedes acabar escribiendo varios inner-wrappers return new Promise((resolve,reject) => {}) para casi todo lo que quieras hacer asíncrono.

  Paquetes en Java: qué son, para qué se utilizan, y cómo se usan (con vídeo)

Espero que este artículo haya sido útil para explicar cómo las funciones asíncronas hacen que tu código sea mucho más limpio. Si tienes alguna pregunta o puedes sugerir alguna edición, no dudes en dejar un mensaje en los comentarios.

¿Disfrutando hasta ahora? Únete a los más de 15000 Esencialistas del Software que reciben mis posts directamente en su bandeja de entrada cada semana. No te enviaré spam. Recibir una notificaciónAcerca del autorKhalil Stemmler, Software Essentialist ⚡Khalil es un desarrollador de software, escritor y músico. Publica con frecuencia

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad