Junior
¿Qué es Promise.race?
sobes.tech AI
Respuesta de la IA
Promise.race — es un método que devuelve una nueva promesa. Esta nueva promesa se resuelve o rechaza con el mismo valor (o motivo) que la primera promesa del objeto iterable pasado (generalmente un array) que se haya completado.
Principios de funcionamiento:
- Entrada: Acepta un objeto iterable (por ejemplo, un array) de promesas.
- Esperar: Comienza una "competencia" entre todas las promesas.
- Resultado: Tan pronto como cualquiera de las promesas en el objeto iterable se complete (ya sea que se resuelva o rechace),
Promise.racese completa instantáneamente con el mismo resultado. - Ignorar: Los resultados de todas las demás promesas que se completen posteriormente se ignoran completamente.
Ejemplo de uso:
// Ejemplo de una promesa que se resuelve después de 1 segundo
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Primero'), 1000));
// Ejemplo de una promesa que se resuelve después de 500 milisegundos
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Segundo'), 500));
// Ejemplo de una promesa que se rechaza después de 300 milisegundos
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Error')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Mostrará 'Error'
})
.catch((error) => {
console.error(error.message); // Procesará el error 'Error'
});
En este ejemplo, promise3 se completa primero (se rechaza), por lo que Promise.race se completa con un error, y se ejecuta el bloque .catch. Si promise2 se hubiera completado primero (por ejemplo, en 10 ms), entonces Promise.race se resolvería con el valor 'Segundo', y se ejecutaría el bloque .then.
Escenarios típicos de uso:
- Implementación de un tiempo de espera para una operación asíncrona.
- Obtener el resultado del fuente de datos más rápido entre varios posibles.
- Cancelar operaciones asíncronas en competencia.