12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.repeat = void 0;
- var empty_1 = require("../observable/empty");
- var lift_1 = require("../util/lift");
- var OperatorSubscriber_1 = require("./OperatorSubscriber");
- var innerFrom_1 = require("../observable/innerFrom");
- var timer_1 = require("../observable/timer");
- function repeat(countOrConfig) {
- var _a;
- var count = Infinity;
- var delay;
- if (countOrConfig != null) {
- if (typeof countOrConfig === 'object') {
- (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay);
- }
- else {
- count = countOrConfig;
- }
- }
- return count <= 0
- ? function () { return empty_1.EMPTY; }
- : lift_1.operate(function (source, subscriber) {
- var soFar = 0;
- var sourceSub;
- var resubscribe = function () {
- sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe();
- sourceSub = null;
- if (delay != null) {
- var notifier = typeof delay === 'number' ? timer_1.timer(delay) : innerFrom_1.innerFrom(delay(soFar));
- var notifierSubscriber_1 = OperatorSubscriber_1.createOperatorSubscriber(subscriber, function () {
- notifierSubscriber_1.unsubscribe();
- subscribeToSource();
- });
- notifier.subscribe(notifierSubscriber_1);
- }
- else {
- subscribeToSource();
- }
- };
- var subscribeToSource = function () {
- var syncUnsub = false;
- sourceSub = source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, undefined, function () {
- if (++soFar < count) {
- if (sourceSub) {
- resubscribe();
- }
- else {
- syncUnsub = true;
- }
- }
- else {
- subscriber.complete();
- }
- }));
- if (syncUnsub) {
- resubscribe();
- }
- };
- subscribeToSource();
- });
- }
- exports.repeat = repeat;
- //# sourceMappingURL=repeat.js.map
|