12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { innerFrom } from '../observable/innerFrom';
- import { executeSchedule } from '../util/executeSchedule';
- import { createOperatorSubscriber } from './OperatorSubscriber';
- export 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(project(value, index++)).subscribe(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(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });
- }
- else {
- doInnerSub(bufferedValue);
- }
- };
- while (buffer.length && active < concurrent) {
- _loop_1();
- }
- checkComplete();
- }
- catch (err) {
- subscriber.error(err);
- }
- }
- }));
- };
- source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {
- isComplete = true;
- checkComplete();
- }));
- return function () {
- additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
- };
- }
- //# sourceMappingURL=mergeInternals.js.map
|