Nas aulas anteriores, aprendemos sobre Promises e Try, Catch, Finally e vimos como elas resolvem os problemas dos callbacks, trazendo mais organização ao código assíncrono, além de evitar o travamento da execução do código.
Mas ainda assim, o uso de then e catch pode deixar o código longo e difícil de acompanhar.
Para resolver isso, o JavaScript introduziu async e await, que permitem escrever código assíncrono com cara de código síncrono.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que são async e await
- Escrever código assíncrono mais legível
- Substituir
thenecatch - Tratar erros com
tryecatch - Ler código assíncrono como se fosse síncrono
O problema que async/await resolve
Veja um exemplo usando Promises:
buscarDados() .then(dados =>
{
console.log(dados); return processarDados(dados);
}) .then(resultado =>
{
console.log(resultado);
}) .catch(erro =>
{
console.log(erro);
}); Funciona, mas a leitura não é tão natural.
Agora veja a mesma lógica usando async e await.
O que significa async?
Quando você coloca async antes de uma função, você está dizendo:
👉 “Essa função trabalha com Promises”.
Toda função async sempre retorna uma Promise, mesmo que você não perceba.
async function exemplo() { return "Olá"; }
exemplo().then(resposta =>
{
console.log(resposta);
});
console.log(resposta); // Saída será "Olá" O que significa await?
O await só pode ser usado dentro de funções async.
Ele diz ao JavaScript:
👉 “Espere essa Promise terminar antes de continuar”.
Mas atenção: isso não trava a aplicação.
Primeiro exemplo completo
function buscarDados()
{
return new Promise(resolve =>
{
setTimeout(() =>
{
resolve("Dados carregados");
}, 2000);
});
}
async function executar()
{
const dados = await buscarDados();
console.log(dados);
}
executar();
console.log(dados);
// Saída será "Dados carregados" (após 2 segundos) Leia esse código como:
- Espere buscar os dados
- Depois, use o resultado
Comparando Promise vs async/await
Com then:
buscarDados().then(dados => { console.log(dados); }); Com async/await:
const dados = await buscarDados(); console.log(dados); Tratando erros com try/catch
Com async/await, tratamos erros usando try e catch.
function falhar()
{
return Promise.reject("Erro ao carregar dados");
}
async function executar()
{
try {
const resultado = await falhar();
console.log(resultado);
}
catch (erro)
{
console.log(erro);
}
}
executar();
console.log(erro);
// Saída será "Erro ao carregar dados" Código assíncrono que parece síncrono
Esse é o grande poder do async/await:
- Fluxo mais claro
- Menos indentação
- Leitura natural
- Mais fácil de debugar
await fora de função async causa erro. Resumo da aula para nunca mais esquecer
asyncdefine funções assíncronasawaitespera uma Promise terminar- O código fica mais legível
- Erros são tratados com
try/catch - É a forma moderna de lidar com assincronicidade
Na próxima aula, vamos entender o que é uma API.
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Space Invaders
A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
Civilization
A empresa Take-Two pagou à Infogrames mais de 22 milhões de dólares pelos direitos de Civilization, em novembro de 1994. Ainda sobre este título, Sid Meier, um dos seus fundadores, é o profissional da área dos games mais premiado em todo o mundo.
Mario e seu bigode
O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.
River Raid
O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.
Duck Hunt
Ao completar o nível 99 do jogo Duck Hunt, para Nintendo, o jogo retorna ao primeiro nível, mas um bug impede que se acerte os patos neste recomeço. Este é um exemplo do que é chamado no mundo dos games de "Kill Screen".










