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