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?
Space Invaders
A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.
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.
Ultima Online
Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras
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.
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.










