Async e Await Javascript

Javascript
Tempo de leitura: 3 minutos

Async e Await Javascript: A programação assíncrona é fundamental em JavaScript para criar aplicações responsivas e eficientes. As promises foram um grande avanço na forma de lidar com operações assíncronas, mas a sintaxe ainda podia ser complexa em cenários mais elaborados.

Para resolver esse problema, o ECMAScript 2017 introduziu o async/await, uma sintaxe que torna o código assíncrono mais parecido com o código síncrono, facilitando a leitura e a escrita.

Neste artigo, vamos mergulhar no mundo do async/await, explorando como essa sintaxe moderna simplifica a programação assíncrona em JavaScript.

O que são Async/Await?

  • Async: Uma palavra-chave que indica que uma função é assíncrona e retorna uma promise.
  • Await: Uma palavra-chave usada dentro de funções async para esperar que uma promise seja resolvida.

Exemplo:

JavaScript

async function fetchData() {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;   
}

Como funciona o Async/Await?

Quando uma função é marcada como async, ela retorna implicitamente uma promise. A palavra-chave await faz com que a execução da função pause até que a promise seja resolvida. O valor resolvido da promise é então atribuído à variável.

Vantagens do Async/Await

  • Sintaxe mais limpa: O código se torna mais legível e fácil de entender.
  • Gerenciamento de erros: O try...catch pode ser usado para tratar erros de forma mais natural.
  • Melhor fluxo de controle: O código parece mais síncrono, facilitando o raciocínio.

Exemplos Práticos

Exemplo 1: Fazendo uma requisição HTTP:

JavaScript

async function buscarUsuario(id) {
  const response = await fetch(`https://api.github.com/users/${id}`);
  const data = await response.json();
  return data;
}

buscarUsuario('octocat')
  .then(user => {
    console.log(user.name);
  })
  .catch(error => {
    console.error(error);
  });

Exemplo 2: Lidando com múltiplas promises:

JavaScript

async function fetchData() {
  const promise1 = fetch('https://api.example.com/data1');
  const promise2 = fetch('https://api.example.com/data2');

  const    [data1, data2] = await Promise.all([promise1, promise2]);   
  return { data1, data2 };
}

Async/Await e Erros

JavaScript

async function fetchDataWithError() {
  try {
    const response = await fetch('https://api.example.com/data-inexistente');
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Erro:', error);
  }
}

Async/Await e Funções Geradoras

As funções async/await são construídas sobre funções geradoras e iteradores. Isso permite que a execução de uma função async seja pausada e retomada em diferentes pontos.

Quando usar Async/Await?

O async/await é ideal para operações assíncronas que exigem um fluxo de controle mais linear e legível. Ele é especialmente útil em cenários onde você precisa esperar por múltiplas promises ou lidar com erros de forma mais elegante.

Comparação com Promises

CaracterísticaPromisesAsync/Await
SintaxeMais verbosa, utiliza then/catchMais concisa, similar a código síncrono
Fluxo de controleMais difícil de acompanhar em operações complexasMais intuitivo e fácil de seguir
ErrosUtilizam catch para tratar errosUtilizam try/catch

Conclusão

Async e Await Javascript: O async/await é uma adição poderosa ao JavaScript que simplifica significativamente a programação assíncrona. Ao entender os conceitos básicos e as melhores práticas, você poderá escrever código mais limpo, eficiente e fácil de manter.

Toda jornada tem um início, e o início para se tornar um desenvolvedor web é dominar as seguintes tecnologias, que você encontra aqui mesmo:

HTML
HTML
CSS
CSS
Javascript
JavaScript

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi