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:
- Legibilidade: O código com
async/awaitparece síncrono, linha por linha, o que facilita a sua compreensão. - 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. - Depuração: Os pontos de interrupção (breakpoints) funcionam como no código síncrono, facilitando o processo de depuração.
- 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.