javascript / expert
Snippet
Fortgeschrittene Fehlerbehebung mit exponentiellem Backoff
Die Implementierung eines exponentiellen Backoffs ist eine Best Practice für den Umgang mit vorübergehenden Netzwerkfehlern. Anstatt sofort erneut zu versuchen, steigt die Verzögerung mit jedem Versuch exponentiell an, um zu verhindern, dass der Client einen überlasteten Server überfordert.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
import { timer, throwError } from 'rxjs';import { retry, mergeMap } from 'rxjs/operators';const retryStrategy = (maxRetries: number = 3) => retry({count: maxRetries,delay: (error, retryCount) => {console.warn(`Retry attempt ${retryCount}...`);return timer(Math.pow(2, retryCount) * 1000);}});this.http.get('/api/data').pipe(retryStrategy()).subscribe();
angular
Erklärung
1
retry({ count, delay })
Die Konfiguration des retry-Operators, die angibt, wie oft und wann das Source-Observable erneut abonniert werden soll.
2
Math.pow(2, retryCount) * 1000
Berechnet die exponentielle Verzögerung (2s, 4s, 8s usw.) basierend auf der aktuellen Versuchsnummer.
3
timer(...)
Erstellt ein Observable, das die berechnete Dauer abwartet, bevor der nächste Wiederholungsversuch ausgelöst wird.