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