¿Como funciona async await?

Asíncrono “Que no tiene lugar en completa correspondencia temporal con otro proceso o con la causa que lo produce.”

Recientemente he estado desarrollando un proyecto basado en Node JS que usaba una librería externa en la que sus métodos devolvían promesas. Sin tener mucha experiencia con lo asíncrono en javascript, para mi la forma más simple de entenderlo y aplicarlo correctamente fue la siguiente:

Supongamos que tienes una promesa como por ejemplo:

function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

Hasta que dicha promesa no sea resuelta, es decir, que en el caso anterior se hayan completado los dos segundos, no tendríamos el resultado de dicha promesa (resolved). Lo que implica que cualquier otro módulo que llame a esta función necesita funcionar de forma asíncrona, para poder alterar la correspondencia temporal. Digamos que vamos a obligar al motor de javascript que espere hasta que nuestra promesa sea resuelta.

El motor de javascript es síncrono

async function asyncCall() {
  console.log('calling');
  const result = await resolveAfter2Seconds();
  console.log(result);
  // expected output: "resolved"
}

Hemos utilizado async para indicar que la función tendrá un comportamiento asíncrono, y await para especificar que esperaremos hasta que la promesa que retorna la función llamada sea resuelta.

Fuente consultada: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

Creado con Hugo
Tema Stack diseñado por Jimmy