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?
Máquina de Pascal
A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. 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.
Cuidados com o notebook
Utilizar seu notebook em camas, sofás ou qualquer superfície macia pode obstruir as entradas e saídas de ar, elevando a temperatura e provocando danos a diversos componentes. Utilize-o sempre sobre uma superfície rígida. Saiba mais 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".
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.










