@lifaon/rx-js-light
Version:
Blazing fast Observables
36 lines (35 loc) • 860 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.conditionalObservable = void 0;
function conditionalObservable(subscribe, condition) {
return function (emit) {
var running = true;
var unsubscribe = null;
var lastValue;
var _unsubscribe = function () {
if (unsubscribe !== null) {
unsubscribe();
unsubscribe = null;
}
};
var unsubscribeOfCondition = condition(function (value) {
if (value !== lastValue) {
lastValue = value;
_unsubscribe();
if (value && running) {
unsubscribe = subscribe(emit);
}
}
});
return function () {
if (running) {
running = false;
unsubscribeOfCondition();
_unsubscribe();
}
};
};
}
exports.conditionalObservable = conditionalObservable;