1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.mergeInternals = void 0;
- var innerFrom_1 = require("../observable/innerFrom");
- var executeSchedule_1 = require("../util/executeSchedule");
- var OperatorSubscriber_1 = require("./OperatorSubscriber");
- function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {
- var buffer = [];
- var active = 0;
- var index = 0;
- var isComplete = false;
- var checkComplete = function () {
- if (isComplete && !buffer.length && !active) {
- subscriber.complete();
- }
- };
- var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };
- var doInnerSub = function (value) {
- expand && subscriber.next(value);
- active++;
- var innerComplete = false;
- innerFrom_1.innerFrom(project(value, index++)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (innerValue) {
- onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
- if (expand) {
- outerNext(innerValue);
- }
- else {
- subscriber.next(innerValue);
- }
- }, function () {
- innerComplete = true;
- }, undefined, function () {
- if (innerComplete) {
- try {
- active--;
- var _loop_1 = function () {
- var bufferedValue = buffer.shift();
- if (innerSubScheduler) {
- executeSchedule_1.executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });
- }
- else {
- doInnerSub(bufferedValue);
- }
- };
- while (buffer.length && active < concurrent) {
- _loop_1();
- }
- checkComplete();
- }
- catch (err) {
- subscriber.error(err);
- }
- }
- }));
- };
- source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, outerNext, function () {
- isComplete = true;
- checkComplete();
- }));
- return function () {
- additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
- };
- }
- exports.mergeInternals = mergeInternals;
- //# sourceMappingURL=mergeInternals.js.map
|