async e await


async

A palavra reservada async é utilizada para indicar que uma função é assíncrona. Funções assíncronas são aquelas que executam operações de forma não bloqueante, permitindo que outras tarefas continuem enquanto aguardam a conclusão da operação assíncrona.

await

A palavra reservada await só pode ser utilizada em funções assíncronas (declaradas com async). Ela é usada para aguardar a conclusão de uma operação assíncrona e obter seu resultado. Isso permite que o código assíncrono seja escrito de forma mais parecida com o código síncrono, melhorando a legibilidade.

Exemplo

function randomTime(min, max) {
  const minInSeconds = min * 1000;
  const maxInSeconds = max * 1000;
 
  return Math.floor(
    Math.random() * (maxInSeconds - minInSeconds) + minInSeconds
  );
}
 
function wait(message) {
  return new Promise((resolve, reject) => {
    if (typeof message !== "string") {
      reject("Valor inválido");
      return;
    }
 
    setTimeout(() => {
      resolve(message);
    }, randomTime(1, 3));
  });
}
 
async function execute() {
  const function1 = await wait("Função 1");
  console.log(function1);
 
  const function2 = await wait("Função 2");
  console.log(function2);
 
  const function3 = await wait("Função 3");
  console.log(function3);
}
 
execute();
 
/* 
Função 1
Função 2
Função 3
*/

O exemplo acima demonstra como a utilização de await simplifica a execução de operações assíncronas. As funções wait simulam operações demoradas e, ao usar await, o código aguarda a conclusão de cada operação antes de prosseguir para a próxima, garantindo uma execução sequencial e compreensível.

Referências