UNPKG

rxjs

Version:

Reactive Extensions for modern JavaScript

29 lines 1.08 kB
import { Subject } from '../Subject'; import { operate } from '../util/lift'; import { OperatorSubscriber } from './OperatorSubscriber'; export function retryWhen(notifier) { return operate((source, subscriber) => { let innerSub; let syncResub = false; let errors$; const subscribeForRetryWhen = () => { innerSub = source.subscribe(new OperatorSubscriber(subscriber, undefined, undefined, (err) => { if (!errors$) { errors$ = new Subject(); notifier(errors$).subscribe(new OperatorSubscriber(subscriber, () => innerSub ? subscribeForRetryWhen() : (syncResub = true))); } if (errors$) { errors$.next(err); } })); if (syncResub) { innerSub.unsubscribe(); innerSub = null; syncResub = false; subscribeForRetryWhen(); } }; subscribeForRetryWhen(); }); } //# sourceMappingURL=retryWhen.js.map