@lifaon/rx-js-light
Version:
Blazing fast Observables
32 lines (31 loc) • 1.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.mergeAllObservable = void 0;
function mergeAllObservable(subscribe, maxNumberOfSubscriptions) {
if (maxNumberOfSubscriptions === void 0) {
maxNumberOfSubscriptions = Number.POSITIVE_INFINITY;
}
maxNumberOfSubscriptions = Math.max(0, maxNumberOfSubscriptions);
return function (emit) {
var running = true;
var childrenUnsubscribeFunctions = [];
var unsubscribe = subscribe(function (childSubscribe) {
childrenUnsubscribeFunctions.push(childSubscribe(emit));
if (childrenUnsubscribeFunctions.length > maxNumberOfSubscriptions) {
childrenUnsubscribeFunctions.shift()();
}
});
return function () {
if (running) {
running = false;
unsubscribe();
for (var i = 0, l = childrenUnsubscribeFunctions.length; i < l; i++) {
childrenUnsubscribeFunctions[i]();
}
}
};
};
}
exports.mergeAllObservable = mergeAllObservable;