Junior
O que é Promise.race?
sobes.tech IA
Resposta da IA
Promise.race — é um método que retorna uma nova promessa. Esta nova promessa é resolvida ou rejeitada com o mesmo valor (ou motivo) que a primeira promessa do objeto iterável passado (geralmente um array) que foi concluída.
Princípios de funcionamento:
- Entrada: Aceita um objeto iterável (por exemplo, um array) de promessas.
- Esperar: Começa uma "competição" entre todas as promessas.
- Resultado: Assim que qualquer das promessas no objeto iterável for concluída (seja resolvida ou rejeitada),
Promise.racetermina instantaneamente com o mesmo resultado. - Ignorar: Os resultados de todas as outras promessas que forem concluídas posteriormente são completamente ignorados.
Exemplo de uso:
// Exemplo de uma promessa que se resolve após 1 segundo
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Primeiro'), 1000));
// Exemplo de uma promessa que se resolve após 500 milissegundos
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Segundo'), 500));
// Exemplo de uma promessa que é rejeitada após 300 milissegundos
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Erro')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Mostrará 'Erro'
})
.catch((error) => {
console.error(error.message); // Processará o erro 'Erro'
});
Neste exemplo, promise3 é concluída primeiro (rejeitada), portanto Promise.race será concluída com um erro, e o bloco .catch será executado. Se promise2 tivesse sido concluída primeiro (por exemplo, em 10 ms), então Promise.race seria resolvida com o valor 'Segundo', e o bloco .then seria executado.
Cenários típicos de uso:
- Implementação de um timeout para uma operação assíncrona.
- Obter o resultado da fonte de dados mais rápida entre várias possíveis.
- Cancelar operações assíncronas concorrentes.