Até aqui, vimos exemplos com Promises que, à primeira vista, parecem desnecessários.
Isso levanta uma dúvida muito justa:
“Isso não poderia ser feito com uma função simples?”
Nesta aula, vamos responder essa pergunta com exemplos reais — mostrando situações onde:
- Funções simples funcionam
- Funções simples quebram
- Promises resolvem
- async/await simplifica drasticamente
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Saber quando uma função simples é suficiente
- Entender quando Promises são necessárias
- Reconhecer problemas assíncronos reais
- Usar async/await para reduzir complexidade
Caso 1 — Função simples funciona
Quando tudo acontece imediatamente, uma função simples é perfeita.
function dobrar(numero) {
return numero * 2;
}
console.log(dobrar(4)); // Saída será 8
Aqui:
- Não há espera
- Não há erro assíncrono
- Não há dependência externa
👉 **Promises seriam exagero.**
Caso 2 — Função simples quebra
Agora imagine um dado que só chega depois.
function buscarUsuario()
{
setTimeout(() =>
{ return
{ nome: "Daniel" };
}, 1000);
}
const usuario = buscarUsuario();
console.log(usuario);
console.log(usuario); // Saída será undefined Por quê?
- O
returnacontece dentro do callback - A função termina antes do dado existir
👉 **Aqui a função simples falha.**
Caso 3 — Promise resolve o problema
Agora o mesmo problema resolvido corretamente:
function buscarUsuario()
{
return new Promise(resolve =>
{
setTimeout(() =>
{
resolve({ nome: "Daniel" });
}, 1000);
});
}
buscarUsuario().then(usuario =>
{
console.log(usuario.nome); // Saída será Daniel
});
Aqui:
- A função retorna imediatamente
- Mas o valor só chega quando estiver pronto
Caso 4 — Encadeamento sem Promise vira caos
Imagine múltiplas operações dependentes:
buscarUsuario(function (usuario)
{
buscarPedidos(usuario.id, function (pedidos)
{
buscarDetalhes(pedidos[0], function (detalhes)
{
console.log(detalhes);
});
});
}); Caso 5 — Promises organizam o fluxo
buscarUsuario() .then(usuario => buscarPedidos(usuario.id)) .then(pedidos => buscarDetalhes(pedidos[0])) .then(detalhes =>
{
console.log(detalhes);
}) .catch(erro =>
{
console.log("Erro:", erro);
}); O fluxo agora é:
- Linear
- Legível
- Com tratamento de erro centralizado
Caso 6 — async/await simplifica ainda mais
O mesmo código com async/await:
async function executar()
{
try
{
const usuario = await buscarUsuario();
const pedidos = await buscarPedidos(usuario.id);
const detalhes = await buscarDetalhes(pedidos[0]);
console.log(detalhes);
} catch (erro)
{
console.log("Erro:", erro);
}
}
executar();
Agora:
- Fluxo parece síncrono
- Mas continua assíncrono
- Mais fácil de ler
- Mais fácil de manter
Comparação honesta
- Função simples → dados imediatos
- Promise → dados futuros
- async/await → Promises legíveis
Resumo da aula para nunca mais esquecer
- Funções simples não esperam dados
- Promises representam valores futuros
- Promises resolvem problemas assíncronos reais
- Use Promise quando o valor que você precisa ainda não está disponível AGORA, mas estará no futuro
- async/await torna o código mais legível
- Nada aqui é mágico — é controle de fluxo
Na próxima aula, vamos aplicar async/await em cenários reais com fetch, erros de rede e controle de fluxo completo.
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?
PDP-1
O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.
Space Invaders
O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.
Pac Man
Apenas no ano de 1982, o clássico Pac Man vendeu mais de 400 mil máquinas de fliperama em todo o mundo e recebeu cerca de 7 bilhões de moedas nestas máquinas. Saiba mais.
Street Fighter 2
Street Fighter 2, lançado para o Super Nintendo no início dos anos 90, foi o principal responsável pelo aumento nas vendas deste console. Graças ao sucesso do título nos Arcades e à perfeita adaptação ao console, muitos consumidores adquiriram o SNES para jogarem o título em casa. Saiba mais.
Música tema do Blanka
Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.










