Sobes.tech
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
});