Agora que você já entende Promises e async/await, vamos aprender a trabalhar com múltiplas Promises ao mesmo tempo.

Para isso, o JavaScript oferece dois métodos fundamentais:

  • Promise.all
  • Promise.race

Eles resolvem problemas diferentes — e entender essa diferença é essencial.

🎯 Objetivo da aula

Ao final desta aula, você será capaz de:

  • Executar Promises em paralelo
  • Entender o comportamento de Promise.all
  • Entender o comportamento de Promise.race
  • Escolher o método correto para cada cenário

Executando Promises em paralelo

Quando criamos várias Promises, elas podem executar ao mesmo tempo:

 
  const tarefa1 = new Promise(resolve => setTimeout(() => resolve("Tarefa 1 concluída"), 1000) );
  const tarefa2 = new Promise(resolve =>
  setTimeout(() => resolve("Tarefa 2 concluída"), 500)
);

Agora vamos coordenar essas Promises.

Promise.all — “tudo ou nada”

Promise.all:

  • espera todas as Promises resolverem
  • retorna um array com os resultados
  • falha se uma Promise falhar

Exemplo com Promise.all

 Promise.all([tarefa1, tarefa2]) .then(resultados => { console.log(resultados); }); 
 // Saída será: // ["Tarefa 1 concluída", "Tarefa 2 concluída"] 

Observe:

  • a ordem do array segue a ordem das Promises
  • não a ordem de finalização

E se uma Promise falhar?

 
  const tarefa3 = Promise.reject("Erro na tarefa 3");
  Promise.all([tarefa1, tarefa3, tarefa2])
  .then(resultados => {
    console.log(resultados);
  })
  .catch(erro => {
    console.log(erro);
  });
 // Saída será: // Erro na tarefa 3 
Se uma Promise falhar, Promise.all falha imediatamente.

Quando usar Promise.all?

  • todas as tarefas são obrigatórias
  • dependências críticas
  • carregamento inicial de dados

Promise.race — “vale a primeira”

Promise.race:

  • resolve ou rejeita com a primeira Promise finalizada
  • não espera as outras

Exemplo com Promise.race

 Promise.race([tarefa1, tarefa2]) .then(resultado => { console.log(resultado); }); 
 // Saída será: // Tarefa 2 concluída 

A tarefa mais rápida vence.

E se a primeira falhar?

 
  const tarefaFalhaRapida = new Promise((_, reject) => setTimeout(() => reject("Falha rápida"), 300) );
  Promise.race([tarefaFalhaRapida, tarefa1])
  .catch(erro => {
    console.log(erro);
  });
 // Saída será: // Falha rápida 
Promise.race não distingue sucesso de erro.

Quando usar Promise.race?

  • timeouts
  • requisições concorrentes
  • limite de espera

Comparação direta

  • Promise.all → tudo precisa dar certo
  • Promise.race → vale a primeira a terminar
Esses métodos são a base para entender Promises modernas.

Resumo da aula para nunca mais esquecer

  • Promise.all executa tudo em paralelo
  • Falha se qualquer Promise falhar
  • Promise.race resolve com a primeira
  • Pode resolver ou rejeitar
  • São métodos fundamentais das Promises

Na próxima aula, vamos conhecer as Promises modernas: Promise.any e Promise.allSettled.


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?

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.


Digitar senhas em computadores de uso coletivo é extremamente perigoso, pois além de softwares de monitoramento, existem dispositivos de hardware que podem capturar suas senhas. Evite ao máximo acessar sites de bancos a partir destes computadores. Veja mais aqui.


As primeiras máquinas de fliperama do mundo a utilizarem moedas, chamadas de Galaxy Game, custavam mais de 20 mil dólares para serem produzidas. Saiba mais sobre elas aqui.


O título Asteroids, do Atari, possui recorde de pontuação há 30 anos. Em 1982 um americano chamado Scott Safran atingiu a marca de 41.336.440. Atualmente ele faz parte de um minúsculo grupo de jogadores que conseguiram manter seus recordes por mais de 30 anos.


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.