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?
Ultima Online
Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
Mario e seu bigode
O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.
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.
Final Fantasy X
O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!
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.










