Até aqui, você já conhece Promise.all e Promise.race.

Agora vamos aprender duas variações modernas que resolvem problemas muito comuns no mundo real:

  • Promise.any
  • Promise.allSettled

Esses métodos não substituem os antigos — eles complementam.

🎯 Objetivo da aula

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

  • Entender a diferença entre all, any e allSettled
  • Escolher o método correto para cada cenário
  • Lidar melhor com falhas parciais
  • Escrever código assíncrono mais robusto

Relembrando rapidamente

Vamos alinhar o comportamento dos métodos mais conhecidos:

  • Promise.all → falha se uma falhar
  • Promise.race → vale a primeira que resolver (ou rejeitar)

Agora veremos alternativas mais flexíveis.

Promise.any — “me dê a primeira que DER CERTO”

Promise.any resolve quando:

  • a primeira Promise for resolvida com sucesso

Ela ignora as rejeições iniciais.

Exemplo prático — múltiplas fontes

 
  const fonte1 = Promise.reject("Fonte 1 indisponível"); 
  const fonte2 = new Promise(resolve => setTimeout(() => resolve("Dados da fonte 2"), 500) ); 
  const fonte3 = new Promise(resolve => setTimeout(() => resolve("Dados da fonte 3"), 1000) );
  Promise.any([fonte1, fonte2, fonte3])
  .then(resultado => {
    console.log(resultado);
  });
 // Saída será: // Dados da fonte 2 

Aqui:

  • a fonte 1 falhou → ignorada
  • a fonte 2 funcionou → resultado final

E se TODAS falharem?

Nesse caso, Promise.any rejeita com um AggregateError.

 Promise.any([ Promise.reject("Erro 1"), Promise.reject("Erro 2") ]) .catch(erro => { console.log(erro.errors); }); 
 // Saída será: // ["Erro 1", "Erro 2"] 
Promise.any só falha se TODAS falharem.

Quando usar Promise.any?

  • múltiplos servidores
  • fallbacks
  • CDNs alternativas
  • qualquer cenário “me dê um que funcione”

Promise.allSettled — “quero saber o resultado de TODAS”

Promise.allSettled:

  • espera todas as Promises finalizarem
  • não falha se alguma rejeitar
  • retorna o status de cada uma

Exemplo prático — relatório completo

 
  const tarefa1 = Promise.resolve("Tarefa 1 OK"); 
  const tarefa2 = Promise.reject("Tarefa 2 falhou"); 
  const tarefa3 = Promise.resolve("Tarefa 3 OK");
  Promise.allSettled([tarefa1, tarefa2, tarefa3])
  .then(resultados => {
    console.log(resultados);
  });
 // Saída será: [ { status: "fulfilled", value: "Tarefa 1 OK" }, { status: "rejected", reason: "Tarefa 2 falhou" }, { status: "fulfilled", value: "Tarefa 3 OK" } ] 

Formato do retorno

Cada resultado tem:

  • status: "fulfilled" ou "rejected"
  • value: se deu certo
  • reason: se falhou

Isso permite tratamento individual.

Exemplo — processando os resultados

 Promise.allSettled([tarefa1, tarefa2, tarefa3]) .then(resultados => { resultados.forEach(resultado => { if (resultado.status === "fulfilled") { console.log("Sucesso:", resultado.value); } else { console.log("Erro:", resultado.reason); } }); }); 
 // Saída será: // Sucesso: Tarefa 1 OK // Erro: Tarefa 2 falhou // Sucesso: Tarefa 3 OK 

Quando usar Promise.allSettled?

  • dashboards
  • relatórios
  • processos em lote
  • quando falhas parciais são aceitáveis

Resumo comparativo

  • Promise.all → tudo ou nada
  • Promise.any → primeira que der certo
  • Promise.allSettled → status de todas
Escolher o método certo evita muitos try/catch desnecessários.

Resumo da aula para nunca mais esquecer

  • Promise.any resolve na primeira Promise bem-sucedida
  • Falhas são ignoradas até todas falharem
  • Promise.allSettled nunca falha
  • Ele retorna o status de cada Promise
  • Esses métodos tornam o código mais robusto

Na próxima aula, vamos conhecer o Top-level await — e entender como usar await fora de funções.


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?

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.


O primeiro jogo a fazer uso de uma Inteligência Artificial foi o Mouse in the Maze, criado em 1955, na União Soviética. Você pode saber mais sobre ele clicando aqui.


O filme Mortal Kombat, inspirado no jogo de mesmo nome, faturou 23 milhões de dólares apenas no fim de semana de estreia nos EUA. Ainda sobre este título de sucesso, outra cifra que impressiona é o faturamento ao longo do primeiro ano: 1 bilhão de dólares no mundo todo.


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.


Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.