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.