Async/Await
Definição
async/await
é uma forma moderna de lidar com operações assíncronas, tornando o código mais claro e sequencial.
Ela permite escrever código como se fosse síncrono, mas lidando internamente com Promises.
async
define que uma função retorna uma Promise.await
pausa a execução da função até que a Promise seja resolvida (ou rejeitada).
Essa abordagem facilita o controle de fluxo, evita o encadeamento excessivo de .then()
e permite tratamento de erros com try/catch
, como em código síncrono.
Objetivos do uso de async/await
- Tornar o código assíncrono mais legível e sequencial.
- Substituir o encadeamento de
.then()
por um estilo mais linear. - Usar
try/catch
para capturar erros, como em código tradicional. - Melhorar a manutenção e depuração do código.
Exemplo prático
Vamos simular uma função que lê um "arquivo" com atraso:
function lerArquivo() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("Conteúdo do arquivo");
}, 1000);
});
}
Código com .then()
lerArquivo().then((conteudo) => {
console.log("Arquivo lido:", conteudo);
});
Código com async/await
async function executar() {
console.log("Lendo...");
const conteudo = await lerArquivo();
console.log("Arquivo lido:", conteudo);
}
executar();
Saída esperada
Lendo...
(espera 1 segundo)
Arquivo lido: Conteúdo do arquivo
Tratamento de erros com try/catch
async function executar() {
try {
const conteudo = await lerArquivo();
console.log("Conteúdo:", conteudo);
} catch (erro) {
console.error("Erro ao ler:", erro);
}
}
await
suspende a execução até a Promise ser resolvida.Erros podem ser capturados com
try/catch
, como em código síncrono.
O ciclo de async/await
[Função async chamada]
↓
[Executa até encontrar await]
↓
[Aguarda Promise resolver]
↓
[Continua a execução com o resultado]
Vantagens sobre .then()
Código mais limpo e próximo da leitura humana.
Erros capturados de forma centralizada.
Ideal para fluxos assíncronos longos e encadeados.
ℹ️
async/await
não substitui Promises — ele usa Promises por baixo dos panos, mas com uma sintaxe mais amigável.