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?

A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.


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.


Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.


O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.


O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.