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.anyPromise.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,anyeallSettled - 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 falharPromise.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 certoreason: 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 nadaPromise.any→ primeira que der certoPromise.allSettled→ status de todas
try/catch desnecessários. Resumo da aula para nunca mais esquecer
Promise.anyresolve na primeira Promise bem-sucedida- Falhas são ignoradas até todas falharem
Promise.allSettlednunca 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.
Você Sabia?
Senhas
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.
Computadores de 1,5 tonelada
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.
Galaxy Game
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.
Playstation
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.
Final Fantasy
O famoso título Final Fantasy, da Square Enix, tem este nome exatamente porque se tratava da última esperança da empresa, que estava à beira da falência quando o lançou. Clique aqui e conheça detalhes dessa história.










