01 de abril de 2023 • 3 min de leitura
Desvendando o Async/Await no JavaScript
Domine o uso de async/await no JavaScript para escrever código assíncrono limpo e fácil de entender.
Async/await é uma funcionalidade do JavaScript que permite escrever código assíncrono de forma mais simples e direta, tornando-o mais fácil de entender e manter. Neste artigo, vamos explorar o que são async/await, como usá-los corretamente e exemplos práticos para ajudá-lo a tirar o máximo proveito dessa funcionalidade poderosa.
1. Entendendo async/await
Async/await é uma extensão da sintaxe de Promises no JavaScript, introduzida no ECMAScript 2017. Com async/await, você pode escrever código assíncrono que se parece e se comporta como código síncrono, o que o torna mais fácil de ler e depurar.
Para usar async/await, você precisa:
- Declarar uma função com a palavra-chave
async
antes da palavra-chavefunction
. - Usar a palavra-chave
await
antes de uma Promise ou função que retorna uma Promise.
2. Exemplo de uso de async/await
Vamos considerar um exemplo simples de uso de async/await:
async function obterDados() {
try {
const resposta = await fetch('https://api.example.com/data');
const dados = await resposta.json();
console.log(dados);
} catch (erro) {
console.error('Erro ao obter os dados:', erro);
}
}
obterDados();
Neste exemplo, a função obterDados é declarada como async. Isso permite o uso da palavra-chave await dentro da função. A função fetch retorna uma Promise, e usamos await para esperar a resolução dessa Promise antes de prosseguir. O mesmo se aplica à função resposta.json() que também retorna uma Promise. Em caso de erro, o bloco catch é executado, exibindo o erro no console.
3. Como lidar com erros em async/await
Assim como no exemplo anterior, é recomendável usar blocos try/catch
para lidar com erros ao trabalhar com async/await. Isso permite capturar e tratar erros de maneira adequada, evitando que sua aplicação falhe ou se comporte incorretamente.
4. Combinando async/await com Promises
Async/await e Promises podem ser usados em conjunto para aproveitar as vantagens de ambos. Por exemplo, você pode usar Promise.all()
para aguardar a resolução de várias Promises em paralelo usando async/await:
async function obterDadosParalelos() {
try {
const [resposta1, resposta2] = await Promise.all([
fetch('https://api.example.com/data1'),
fetch('https://api.example.com/data2'),
]);
const dados1 = await resposta1.json();
const dados2 = await resposta2.json();
console.log(dados1, dados2);
} catch (erro) {
console.error('Erro ao obter os dados:', erro);
}
}
obterDadosParalelos();
Neste exemplo, estamos usando Promise.all()
para aguardar a resolução de duas chamadas fetch
em paralelo. Isso permite que os dados sejam carregados de forma mais rápida e eficiente. Em seguida, usamos async/await para esperar a resolução das Promises retornadas por resposta1.json()
e resposta2.json()
e exibir os dados no console.
5. Considerações importantes ao usar async/await
Ao usar async/await, é importante ter em mente algumas considerações:
- A palavra-chave
await
só pode ser usada dentro de funçõesasync
. - A função
async
sempre retorna uma Promise, mesmo que você não esteja usando explicitamente Promises no corpo da função. - Async/await não substitui completamente as Promises, mas sim complementa e melhora a forma de lidar com código assíncrono.
Ao dominar o uso de async/await no JavaScript, você será capaz de escrever código assíncrono mais limpo, fácil de entender e manter. Aplique esse conhecimento em suas aplicações e explore as possibilidades que async/await oferece para melhorar a performance e a qualidade do seu código.