Junior
Wyjaśnij, czym jest Promise.race i jak jest używany w JavaScript.
sobes.tech AI
Odpowiedź od AI
Promise.race przyjmuje obiekt iterowalny promes i zwraca nową promesę. Ta nowa promesa zostanie rozwiązana lub odrzucona tak szybko, jak tylko pierwsza promesa w obiekcie iterowalnym zostanie rozwiązana lub odrzucona. Wynikiem nowej promesy będzie wynik lub przyczyna odrzucenia pierwszej zakończonej promesy.
Używa się do:
- Wybrania najszybszej odpowiedzi spośród kilku operacji asynchronicznych.
- Implementacji limitów czasowych dla operacji asynchronicznych.
Przykład limitu czasowego:
// Funkcja tworząca promesę, która odrzuca się po określonym czasie
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(`Timeout after ${ms}ms`));
}, ms);
});
}
// Operacja asynchroniczna, która może być wolna
function fetchData() {
return new Promise(resolve => {
// Symulacja długiej operacji
setTimeout(() => {
resolve('Dane pobrane pomyślnie');
}, 2000); // Załóżmy, że ta operacja trwa 2 sekundy
});
}
// Użycie Promise.race do dodania limitu czasowego do fetchData
Promise.race([
fetchData(), // Nasza operacja
timeout(1000) // Limit czasowy 1 sekundy
])
.then(result => {
console.log(result); // Wykona się, jeśli fetchData zakończy się przed limitem
})
.catch(error => {
console.error(error.message); // Wykona się, jeśli limit zostanie przekroczony jako pierwszy
});