Async/Await

Definição

async/await é uma forma moderna de lidar com operações assíncronas, tornando o código mais claro e sequencial. Ela permite escrever código como se fosse síncrono, mas lidando internamente com Promises.

  • async define que uma função retorna uma Promise.
  • await pausa a execução da função até que a Promise seja resolvida (ou rejeitada).

Essa abordagem facilita o controle de fluxo, evita o encadeamento excessivo de .then() e permite tratamento de erros com try/catch, como em código síncrono.

Objetivos do uso de async/await

  • Tornar o código assíncrono mais legível e sequencial.
  • Substituir o encadeamento de .then() por um estilo mais linear.
  • Usar try/catch para capturar erros, como em código tradicional.
  • Melhorar a manutenção e depuração do código.

Exemplo prático

Vamos simular uma função que lê um "arquivo" com atraso:

function lerArquivo() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("Conteúdo do arquivo");
    }, 1000);
  });
}

Código com .then()

lerArquivo().then((conteudo) => {
  console.log("Arquivo lido:", conteudo);
});

Código com async/await

async function executar() {
  console.log("Lendo...");
  const conteudo = await lerArquivo();
  console.log("Arquivo lido:", conteudo);
}

executar();

Saída esperada

Lendo...
(espera 1 segundo)
Arquivo lido: Conteúdo do arquivo

Tratamento de erros com try/catch

async function executar() {
  try {
    const conteudo = await lerArquivo();
    console.log("Conteúdo:", conteudo);
  } catch (erro) {
    console.error("Erro ao ler:", erro);
  }
}
  • await suspende a execução até a Promise ser resolvida.

  • Erros podem ser capturados com try/catch, como em código síncrono.

O ciclo de async/await

[Função async chamada]
     ↓
[Executa até encontrar await]
     ↓
[Aguarda Promise resolver]
     ↓
[Continua a execução com o resultado]

Vantagens sobre .then()

  • Código mais limpo e próximo da leitura humana.

  • Erros capturados de forma centralizada.

  • Ideal para fluxos assíncronos longos e encadeados.

ℹ️ async/await não substitui Promises — ele usa Promises por baixo dos panos, mas com uma sintaxe mais amigável.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com