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?
Ábaco
O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.
Tomb Raider - O Filme
Considerando todas as adaptações de jogos de videogame para o cinema, a mais bem sucedida foi Lara Croft: Tomb Raider, lançado em 2001 e que faturou 274 milhões de dólares. Ele foi dirigido por Simon West e estrelado pela bela Angelina Jolie.
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.
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.
Tetris
O título Tetris detém o recorde de jogo mais adaptado de todos os tempos. No total foram mais de 60 plataformas diferentes que receberam alguma versão do quebra-cabeças criado por Alexey Pajitnov. Conheça mais sobre este incrível jogo clicando aqui.










