Agora que você já entende Promises e async/await, vamos aprender a trabalhar com múltiplas Promises ao mesmo tempo.
Para isso, o JavaScript oferece dois métodos fundamentais:
Promise.allPromise.race
Eles resolvem problemas diferentes — e entender essa diferença é essencial.
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Executar Promises em paralelo
- Entender o comportamento de
Promise.all - Entender o comportamento de
Promise.race - Escolher o método correto para cada cenário
Executando Promises em paralelo
Quando criamos várias Promises, elas podem executar ao mesmo tempo:
const tarefa1 = new Promise(resolve => setTimeout(() => resolve("Tarefa 1 concluída"), 1000) );
const tarefa2 = new Promise(resolve =>
setTimeout(() => resolve("Tarefa 2 concluída"), 500)
);
Agora vamos coordenar essas Promises.
Promise.all — “tudo ou nada”
Promise.all:
- espera todas as Promises resolverem
- retorna um array com os resultados
- falha se uma Promise falhar
Exemplo com Promise.all
Promise.all([tarefa1, tarefa2]) .then(resultados => { console.log(resultados); }); // Saída será: // ["Tarefa 1 concluída", "Tarefa 2 concluída"] Observe:
- a ordem do array segue a ordem das Promises
- não a ordem de finalização
E se uma Promise falhar?
const tarefa3 = Promise.reject("Erro na tarefa 3");
Promise.all([tarefa1, tarefa3, tarefa2])
.then(resultados => {
console.log(resultados);
})
.catch(erro => {
console.log(erro);
});
// Saída será: // Erro na tarefa 3 Promise.all falha imediatamente. Quando usar Promise.all?
- todas as tarefas são obrigatórias
- dependências críticas
- carregamento inicial de dados
Promise.race — “vale a primeira”
Promise.race:
- resolve ou rejeita com a primeira Promise finalizada
- não espera as outras
Exemplo com Promise.race
Promise.race([tarefa1, tarefa2]) .then(resultado => { console.log(resultado); }); // Saída será: // Tarefa 2 concluída A tarefa mais rápida vence.
E se a primeira falhar?
const tarefaFalhaRapida = new Promise((_, reject) => setTimeout(() => reject("Falha rápida"), 300) );
Promise.race([tarefaFalhaRapida, tarefa1])
.catch(erro => {
console.log(erro);
});
// Saída será: // Falha rápida Promise.race não distingue sucesso de erro. Quando usar Promise.race?
- timeouts
- requisições concorrentes
- limite de espera
Comparação direta
Promise.all→ tudo precisa dar certoPromise.race→ vale a primeira a terminar
Resumo da aula para nunca mais esquecer
Promise.allexecuta tudo em paralelo- Falha se qualquer Promise falhar
Promise.raceresolve com a primeira- Pode resolver ou rejeitar
- São métodos fundamentais das Promises
Na próxima aula, vamos conhecer as Promises modernas: Promise.any e Promise.allSettled.
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?
Música tema do Blanka
Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.
PC com barulho?
Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.
Tetris
Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.
Mario e seu bigode
O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.
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.










