← Voltar na listagem

01 de abril de 20233 min de leitura

Desvendando o Async/Await no JavaScript

Domine o uso de async/await no JavaScript para escrever código assíncrono limpo e fácil de entender.

Async/await é uma funcionalidade do JavaScript que permite escrever código assíncrono de forma mais simples e direta, tornando-o mais fácil de entender e manter. Neste artigo, vamos explorar o que são async/await, como usá-los corretamente e exemplos práticos para ajudá-lo a tirar o máximo proveito dessa funcionalidade poderosa.

1. Entendendo async/await

Async/await é uma extensão da sintaxe de Promises no JavaScript, introduzida no ECMAScript 2017. Com async/await, você pode escrever código assíncrono que se parece e se comporta como código síncrono, o que o torna mais fácil de ler e depurar.

Para usar async/await, você precisa:

  • Declarar uma função com a palavra-chave async antes da palavra-chave function.
  • Usar a palavra-chave await antes de uma Promise ou função que retorna uma Promise.

2. Exemplo de uso de async/await

Vamos considerar um exemplo simples de uso de async/await:

async function obterDados() {
  try {
    const resposta = await fetch('https://api.example.com/data');
    const dados = await resposta.json();
    console.log(dados);
  } catch (erro) {
    console.error('Erro ao obter os dados:', erro);
  }
}

obterDados();

Neste exemplo, a função obterDados é declarada como async. Isso permite o uso da palavra-chave await dentro da função. A função fetch retorna uma Promise, e usamos await para esperar a resolução dessa Promise antes de prosseguir. O mesmo se aplica à função resposta.json() que também retorna uma Promise. Em caso de erro, o bloco catch é executado, exibindo o erro no console.

3. Como lidar com erros em async/await

Assim como no exemplo anterior, é recomendável usar blocos try/catch para lidar com erros ao trabalhar com async/await. Isso permite capturar e tratar erros de maneira adequada, evitando que sua aplicação falhe ou se comporte incorretamente.

4. Combinando async/await com Promises

Async/await e Promises podem ser usados em conjunto para aproveitar as vantagens de ambos. Por exemplo, você pode usar Promise.all() para aguardar a resolução de várias Promises em paralelo usando async/await:

async function obterDadosParalelos() {
  try {
    const [resposta1, resposta2] = await Promise.all([
      fetch('https://api.example.com/data1'),
      fetch('https://api.example.com/data2'),
    ]);
    const dados1 = await resposta1.json();
    const dados2 = await resposta2.json();

    console.log(dados1, dados2);
  } catch (erro) {
    console.error('Erro ao obter os dados:', erro);
  }
}

obterDadosParalelos();

Neste exemplo, estamos usando Promise.all() para aguardar a resolução de duas chamadas fetch em paralelo. Isso permite que os dados sejam carregados de forma mais rápida e eficiente. Em seguida, usamos async/await para esperar a resolução das Promises retornadas por resposta1.json() e resposta2.json() e exibir os dados no console.

5. Considerações importantes ao usar async/await

Ao usar async/await, é importante ter em mente algumas considerações:

  • A palavra-chave await só pode ser usada dentro de funções async.
  • A função async sempre retorna uma Promise, mesmo que você não esteja usando explicitamente Promises no corpo da função.
  • Async/await não substitui completamente as Promises, mas sim complementa e melhora a forma de lidar com código assíncrono.

Ao dominar o uso de async/await no JavaScript, você será capaz de escrever código assíncrono mais limpo, fácil de entender e manter. Aplique esse conhecimento em suas aplicações e explore as possibilidades que async/await oferece para melhorar a performance e a qualidade do seu código.