Até aqui, já entendemos:
- Como o JavaScript executa código
- Call Stack e Execution Context
- Event Loop
- Microtasks e Macrotasks
Agora chegou a hora de entender por que Promises existem — e por que async/await não é “mágica”.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o problema que Promises resolvem
- Compreender o estado interno de uma Promise
- Saber como
then,catchefinallyfuncionam - Entender o que o
async/awaitfaz por baixo do capô - Parar de tratar Promises como “caixa preta”
O problema original: callbacks
Antes das Promises, o JavaScript lidava com assincronicidade usando callbacks.
buscarUsuario(function (usuario)
{
buscarPedidos(usuario.id, function (pedidos)
{
buscarDetalhes(pedidos[0], function (detalhes)
{
console.log(detalhes);
});
});
}); Problemas:
- Código difícil de ler
- Difícil de tratar erros
- Difícil de manter
O que é uma Promise?
Uma Promise representa:
um valor que ainda não existe, mas vai existir no futuro (ou falhar).
Ela é um objeto que pode estar em três estados:
- pending (pendente)
- fulfilled (resolvida)
- rejected (rejeitada)
Criando uma Promise manualmente
const promessa = new Promise((resolve, reject) =>
{
const sucesso = true;
if (sucesso)
{
resolve("Deu certo!");
}
else
{
reject("Deu errado!");
}
});
Consumindo essa Promise:
promessa .then(resultado => { console.log(resultado); }) .catch(erro => { console.log(erro); }); console.log(resultado); // Saída será: Deu certo! O papel do .then()
O then:
- é chamado quando a Promise é resolvida
- entra na Microtask Queue
- não executa imediatamente
Isso conecta diretamente com tudo que vimos sobre Event Loop.
Encadeamento de Promises
Promise.resolve(2) .then(numero => numero * 2) .then(resultado =>
{
console.log(resultado);
}); console.log(resultado); // Saída será: 4 then retorna uma nova Promise. Tratando erros corretamente
Promise.resolve() .then(() =>
{
throw new Error("Erro inesperado");
}) .catch(erro =>
{
console.log(erro.message);
}); console.log(erro.message); // Saída será: Erro inesperado Um catch captura qualquer erro anterior no encadeamento.
Então… o que é async/await?
async/await é:
açúcar sintático em cima de Promises.
Nada mais.
Exemplo com async/await
async function buscarDados()
{
const resultado = await Promise.resolve("Dados carregados");
console.log(resultado);
}
buscarDados();
console.log(resultado); // Saída será: Dados carregados O que o await faz de verdade?
Quando o JavaScript encontra um await:
- A função é pausada
- O Call Stack é liberado
- A Promise continua sendo processada
- A continuação vira uma microtask
await NÃO bloqueia o JavaScript. Async/await com try/catch
async function executar()
{
try {
const resultado = await Promise.reject("Falhou");
console.log(resultado);
}
catch (erro)
{
console.log(erro);
}
}
executar();
console.log(erro); // Saída será: Falhou Comparação mental importante
- Promise → controle explícito
- async/await → leitura sequencial
- Ambos usam microtasks
- Ambos respeitam o Event Loop
async/await não transforma código assíncrono em síncrono — apenas parece. Resumo da aula para nunca mais esquecer
- Promises surgiram para resolver o callback hell
- Uma Promise representa um valor futuro
thenecatchusam microtasksasync/awaité açúcar sintático- O Event Loop continua mandando em tudo
Na próxima aula, vamos aplicar Promises e async/await em cenários reais, conectando com APIs, erros e fluxo de dados.
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?
Recorde de patentes
A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.
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".
Tomb Raider - O Filme
Considerando todas as adaptações de jogos de videogame para o cinema, a mais bem sucedida foi Lara Croft: Tomb Raider, lançado em 2001 e que faturou 274 milhões de dólares. Ele foi dirigido por Simon West e estrelado pela bela Angelina Jolie.
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.
Donkey Kong
A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.










