Na aula anterior, aprendemos sobre Callbacks e vimos que eles resolvem o problema da assincronicidade, mas podem deixar o código difícil de ler e manter quando se acumulam.
Para resolver isso, o JavaScript introduziu um conceito mais organizado e poderoso: as Promises.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que é uma Promise
- Compreender os estados de uma Promise
- Criar e consumir Promises
- Usar
thenecatch - Evitar o Callback Hell
O que é uma Promise?
Uma Promise representa um valor que ainda não existe, mas que estará disponível no futuro.
Ela é uma promessa de que algo vai acontecer — ou dar certo, ou dar errado.
É como pedir algo em um restaurante:
- Você faz o pedido
- A cozinha prepara
- Você recebe o prato ou um aviso de problema
Os estados de uma Promise
Uma Promise pode estar em três estados:
- pending → em andamento
- fulfilled → resolvida com sucesso
- rejected → rejeitada com erro
Uma vez resolvida ou rejeitada, ela não muda mais.
Criando uma Promise
Uma Promise é criada usando o construtor Promise, que recebe uma função com dois parâmetros:
resolve→ quando tudo dá certoreject→ quando algo dá errado
const promessa = new Promise((resolve, reject) =>
{
const sucesso = true;
if (sucesso)
{
resolve("Operação concluída com sucesso");
} else
{
reject("Algo deu errado");
}
});
Consumindo uma Promise
Para usar o valor de uma Promise, utilizamos then e catch.
promessa .then(resultado =>
{
console.log(resultado);
}) .catch(erro =>
{
console.log(erro);
});
console.log(resultado);
// Saída será "Operação concluída com sucesso" Promise com atraso (exemplo real)
Vamos simular uma tarefa que demora, usando setTimeout.
function buscarDados()
{
return new Promise((resolve) =>
{
setTimeout(() =>
{
resolve("Dados carregados");
}, 2000);
});
}
buscarDados().then(dados =>
{
console.log(dados);
});
console.log(dados);
// Saída será "Dados carregados" (após 2 segundos) Encadeando Promises
Uma das grandes vantagens das Promises é poder encadeá-las:
buscarDados() .then(dados =>
{
console.log(dados); return "Processando dados";
}) .then(mensagem =>
{
console.log(mensagem);
});
console.log(dados);
// Saída será "Dados carregados"
console.log(mensagem);
// Saída será "Processando dados" Tratando erros com catch
Se qualquer erro acontecer no encadeamento, o catch é chamado:
Promise.reject("Erro inesperado") .then(() =>
{
console.log("Isso não será executado");
}) .catch(erro =>
{
console.log(erro);
});
console.log(erro);
// Saída será "Erro inesperado" Por que Promises são melhores que callbacks?
- Código mais legível
- Menos indentação
- Tratamento de erro centralizado
- Fluxo mais previsível
Resumo da aula para nunca mais esquecer
- Promise é um contrato com o futuro enquanto uma função simples é execução no presente
- Pode ser resolvida ou rejeitada
- Usa
thenecatch - Permite encadear operações assíncronas
- É base para
asynceawait
Na próxima aula, vamos aprender a forma mais moderna e legível de trabalhar com Promises: async e await.
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
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.
Mega Man
A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.
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.
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.
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.










