Sobes.tech
Junior

Explica qué es Promise.race y cómo se usa en JavaScript.

sobes.tech AI

Respuesta de la IA

Promise.race acepta un objeto iterable de promesas y devuelve una nueva promesa. Esta nueva promesa se resuelve o se rechaza tan pronto como la primera promesa en el objeto iterable se resuelve o se rechaza. El resultado de la nueva promesa será el resultado o la razón del rechazo de la primera promesa que se complete.

Se usa para:

  • Elegir la respuesta más rápida entre varias operaciones asíncronas.
  • Implementar tiempos de espera para operaciones asíncronas.

Ejemplo de tiempo de espera:

// Función que crea una promesa que se rechaza después de un tiempo determinado
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error(`Timeout after ${ms}ms`));
    }, ms);
  });
}

// Operación asíncrona que puede ser lenta
function fetchData() {
  return new Promise(resolve => {
    // Simulación de una operación prolongada
    setTimeout(() => {
      resolve('Datos obtenidos con éxito');
    }, 2000); // Supongamos que esta operación tarda 2 segundos
  });
}

// Uso de Promise.race para agregar un tiempo de espera a fetchData
Promise.race([
  fetchData(),  // Nuestra operación
  timeout(1000) // Tiempo de espera de 1 segundo
])
.then(result => {
  console.log(result); // Se ejecutará si fetchData termina antes del tiempo de espera
})
.catch(error => {
  console.error(error.message); // Se ejecutará si el tiempo de espera se cumple primero
});