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?
Asteroids
O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.
Muitos aplicativos
Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.
ENIAC
O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.
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.
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.










