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?

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 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.


O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.


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.


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.