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
});