Sobes.tech
Middle

Por que foi introduzida a construção async/await e como ela melhora o trabalho com código assíncrono?

sobes.tech IA

Resposta da IA

Async/await foi introduzido para simplificar a escrita de código assíncrono, tornando-o mais legível e fácil de manter em comparação com os callbacks ou promessas tradicionais.

Como melhora:

  1. Legibilidade: O código com async/await parece síncrono, linha por linha, o que facilita a sua compreensão.
  2. Tratamento de erros: Permite usar construções padrão como try/catch para lidar com erros em código assíncrono, ao contrário de .catch() em promessas.
  3. Depuração: Os pontos de interrupção (breakpoints) funcionam como no código síncrono, facilitando o processo de depuração.
  4. Menos "callback hell": Elimina o problema de callbacks aninhados, que leva a um código ilegível.

Exemplo:

Código com promessas:

// Exemplo com promessas
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Erro ao buscar dados:', error);
  });

O mesmo código com async/await:

// Exemplo com async/await
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Erro ao buscar dados:', error);
  }
}

fetchData();

A construção async/await é baseada em promessas e é açúcar sintático para trabalhar com elas. A função marcada como async sempre retorna uma promessa. O operador await só pode ser usado dentro de funções async e "espera" a resolução da promessa, retornando seu valor resolvido ou gerando uma exceção em caso de erro.