javascript / intermediate
Snippet
Race Conditions und Timeouts mit Promise.race()
Promise.race() gibt ein Versprechen zurück, das abgeschlossen ist, sobald eines der Eingabe-Versprechen abgeschlossen ist (entweder aufgelöst oder abgelehnt). Dies wird häufig verwendet, um Timeouts für Netzwerkanfragen zu implementieren.
snippet.js
1
2
3
4
5
6
const fetchData = new Promise(resolve => setTimeout(() => resolve('Data'), 5000));const timeout = new Promise((_, reject) => setTimeout(() => reject('Request timed out'), 2000));Promise.race([fetchData, timeout]).then(console.log).catch(console.error);
Erklärung
1
Promise.race([fetchData, timeout])
Wartet darauf, dass das allererste Versprechen im Array fertig wird.
2
reject('Request timed out')
Wenn das Timeout zuerst eintritt, wird das gesamte Rennen abgelehnt.
3
.catch(console.error);
Behandelt die Ablehnung, falls das Timeout eintritt, bevor die Daten ankommen.