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?
Asteroids
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.
Final Fantasy X
O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!
Muitos aplicativos
Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.
Donkey Kong
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.
Mortal Kombat - O Filme
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.










