Sobes.tech
Middle

Qual é a vantagem do açúcar sintático apresentado na forma de async/await em comparação com Promise?

sobes.tech IA

Resposta da IA

A principal vantagem do async/await em relação às promessas "puros" é a capacidade de escrever código assíncrono de uma forma mais síncrona e legível.

Comparação:

Aspeto Promise async/await
Legibilidade Pode levar a "encadeamentos de promessas". Permite escrever código quase como síncrono.
Tratamento de erros Usa .catch(). Usa try...catch padrão.
Sequencialidade Requer encadeamento cuidadoso ou Promise.all. Claro e fácil de ler.
Depuração Pode ser mais difícil de seguir. Semelhante à depuração de código síncrono.
Ruído sintático Muitos .then(), .catch(). Menos boilerplate.

Exemplo com promessas:

// Exemplo com Promise
fetch('user.json')
  .then(response => response.json())
  .then(user => fetch(`https://api.github.com/users/${user.name}`))
  .then(githubUser => githubUser.json())
  .then(githubUser => {
    // Processamento de dados
    console.log(githubUser);
  })
  .catch(error => {
    console.error('Erro:', error);
  });

Exemplo com async/await:

// Exemplo com async/await
async function getUserData() {
  try {
    const userResponse = await fetch('user.json');
    const user = await userResponse.json();

    const githubResponse = await fetch(`https://api.github.com/users/${user.name}`);
    const githubUser = await githubResponse.json();

    // Processamento de dados
    console.log(githubUser);
  } catch (error) {
    console.error('Erro:', error);
  }
}

getUserData();

Assim, async/await não substitui promessas, mas é um açúcar sintático sobre elas, tornando as operações assíncronas mais intuitivas e fáceis de manter.