Async y Await - SoniaHarry/Course-Checkpoint-8 GitHub Wiki

¿Qué hacen async y await por nosotros?

Ayudan a que nuestro código no sea tan complejo dándonos la posibilidad de realizarlo de una forma mucho más eficiente.

Para empezar, tendríamos que decir que Javascript por naturaleza trabaja de forma asíncrona, es decir, hasta que un proceso no se ejecuta (se llama y se espera una devolución de la llamada) no pasa al siguiente, por lo que programar grandes procesos podría ser un tedioso. Para ello es mejor utilizar las promesas y para que no nos pase lo mismo y los procesos no se compliquen, podemos usar las promesas de forma aparentemente sincronía con las palabras async y await. Permitiéndonos transformar un código asíncrono para que parezca ser síncrono.

Con async y await :

  • evitamos encadenar varias .then()
  • pasamos a un modelo bloqueante, es decir, hasta que no se ejecute un proceso estaremos a la espera sin ejecutar nada más hasta que nos devuelva algo la llamada.

Await nos permite definir una sección de la función a la cual el resto del código debe esperar.

NOTA: Para poder utilizar await (asíncrono) dentro de una función(sincronía) será necesario añadir la palabra async delante de “function” para convertirla en asíncrona.

Ejemplo:

Si una Promise se pasa a una expresión await, espera a que la Promise se resuelva y devuelve el valor resuelto.

const registerUser = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('User logged in...');
    }, 2000);
  });
}

const payRoom = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(‘the payment is correct…’);
    }, 2000);
  });
}

async function checkIn() {
  const returnedRegister = await registerUser();
  console.log(returnedRegister);

  const returnedPay = await payRoom();
  console.log(returnedPay);
}

checkIn(); // 'User logged in...' (after 2 seconds)  ‘the payment is correct…’ (after 2 seconds)

Si el valor no es una Promise, convierte el valor a una Promise resuelta, y espera por dicho valor.

Ejemplo:

async function example2() {
  var num = await 20;
  console.log(num); // 20
}
example2();

Si la Promise es rechazada, se lanza una excepción con dicho el valor.

Ejemplo:

async function example3() {
  try {
    var z = await Promise.reject(30);
  } catch (err) {
    console.log(err); // 30
  }
}
example3();

NOTA: Se aconseja la utilización de try y catch para capturar los errores como se muestra en el ejemplo anterior. Y poder saber donde y que esta provocando el error.


📚REFERENCIAS

https://www.freecodecamp.org/espanol/news/como-usar-async-await-para-escribir-un-codigo-mejor-en-javascript/ https://es.javascript.info/async-await https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/async_function

⚠️ **GitHub.com Fallback** ⚠️