UNPKG

1.15 kBPlain TextView Raw
1import { Observable } from 'rxjs';
2import { retry as higherOrder } from 'rxjs/operators';
3
4/**
5 * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable
6 * calls `error`, this method will resubscribe to the source Observable for a maximum of `count` resubscriptions (given
7 * as a number parameter) rather than propagating the `error` call.
8 *
9 * <img src="./img/retry.png" width="100%">
10 *
11 * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those emitted
12 * during failed subscriptions. For example, if an Observable fails at first but emits [1, 2] then succeeds the second
13 * time and emits: [1, 2, 3, 4, 5] then the complete stream of emissions and notifications
14 * would be: [1, 2, 1, 2, 3, 4, 5, `complete`].
15 * @param {number} count - Number of retry attempts before failing.
16 * @return {Observable} The source Observable modified with the retry logic.
17 * @method retry
18 * @owner Observable
19 */
20export function retry<T>(this: Observable<T>, count: number = -1): Observable<T> {
21 return higherOrder(count)(this) as Observable<T>;
22}