Junior
Explique o que é Promise.race e como é utilizado em JavaScript.
sobes.tech IA
Resposta da IA
Promise.race aceita um objeto iterável de promessas e retorna uma nova promessa. Esta nova promessa é resolvida ou rejeitada assim que a primeira promessa no objeto iterável é resolvida ou rejeitada. O resultado da nova promessa será o resultado ou a razão da rejeição da primeira promessa que for concluída.
Usado para:
- Escolher a resposta mais rápida entre várias operações assíncronas.
- Implementar tempos limite para operações assíncronas.
Exemplo de tempo limite:
// Função que cria uma promessa que rejeita após um determinado tempo
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Operação assíncrona que pode ser lenta
function fetchData() {
return new Promise(resolve => {
// Simulação de uma operação prolongada
setTimeout(() => {
resolve('Dados obtidos com sucesso');
}, 2000); // Suponha que esta operação leva 2 segundos
});
}
// Uso de Promise.race para adicionar um tempo limite ao fetchData
Promise.race([
fetchData(), // Nossa operação
timeout(1000) // Tempo limite de 1 segundo
])
.then(result => {
console.log(result); // Será executado se fetchData terminar antes do tempo limite
})
.catch(error => {
console.error(error.message); // Será executado se o tempo limite ocorrer primeiro
});