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 then e catch
  • 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á certo
  • reject → 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
Promises resolvem o Callback Hell, mas ainda podem ficar verbosas em códigos grandes.

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 then e catch
  • Permite encadear operações assíncronas
  • É base para async e await

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.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.


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.


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.


O personagem Mario surgiu pela primeira vez no mundo dos games em um jogo chamado Donkey Kong, lançado em 1981. Mario, que naquela época se chamava Jumpman, não era o personagem principal do jogo, mas ele se tornaria um dos mais famosos personagens do mundo dos games. Saiba mais.


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.