12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.retry = void 0;
- var lift_1 = require("../util/lift");
- var OperatorSubscriber_1 = require("./OperatorSubscriber");
- var identity_1 = require("../util/identity");
- var timer_1 = require("../observable/timer");
- var innerFrom_1 = require("../observable/innerFrom");
- function retry(configOrCount) {
- if (configOrCount === void 0) { configOrCount = Infinity; }
- var config;
- if (configOrCount && typeof configOrCount === 'object') {
- config = configOrCount;
- }
- else {
- config = {
- count: configOrCount,
- };
- }
- var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b;
- return count <= 0
- ? identity_1.identity
- : lift_1.operate(function (source, subscriber) {
- var soFar = 0;
- var innerSub;
- var subscribeForRetry = function () {
- var syncUnsub = false;
- innerSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {
- if (resetOnSuccess) {
- soFar = 0;
- }
- subscriber.next(value);
- }, undefined, function (err) {
- if (soFar++ < count) {
- var resub_1 = function () {
- if (innerSub) {
- innerSub.unsubscribe();
- innerSub = null;
- subscribeForRetry();
- }
- else {
- syncUnsub = true;
- }
- };
- if (delay != null) {
- var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(err, soFar));
- var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {
- notifierSubscriber_1.unsubscribe();
- resub_1();
- }, function () {
- subscriber.complete();
- });
- notifier.subscribe(notifierSubscriber_1);
- }
- else {
- resub_1();
- }
- }
- else {
- subscriber.error(err);
- }
- }));
- if (syncUnsub) {
- innerSub.unsubscribe();
- innerSub = null;
- subscribeForRetry();
- }
- };
- subscribeForRetry();
- });
- }
- exports.retry = retry;
- //# sourceMappingURL=retry.js.map
|