.
This commit is contained in:
30
node_modules/rxjs/dist/esm/internal/operators/retryWhen.js
generated
vendored
Normal file
30
node_modules/rxjs/dist/esm/internal/operators/retryWhen.js
generated
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
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
|
||||
Reference in New Issue
Block a user