@lifaon/rx-js-light
Version:
Blazing fast Observables
48 lines (47 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.thenObservable = void 0;
var async_unsubscribe_1 = require("../../../../../misc/helpers/async-unsubscribe.cjs");
function thenObservable(subscribe, onFulfilled, onRejected) {
return function (emit) {
var running = true;
var childUnsubscribe;
var lastValue;
var end = function () {
if (running) {
(0, async_unsubscribe_1.asyncUnsubscribe)(function () {
return unsubscribe;
});
} else {
childUnsubscribe();
}
};
var unsubscribe = subscribe(function (notification) {
switch (notification.name) {
case 'next':
lastValue = notification.value;
break;
case 'complete':
childUnsubscribe = onFulfilled(lastValue)(emit);
end();
break;
case 'error':
childUnsubscribe = onRejected(notification.value)(emit);
end();
break;
}
});
return function () {
if (running) {
running = false;
unsubscribe();
if (childUnsubscribe !== void 0) {
childUnsubscribe();
}
}
};
};
}
exports.thenObservable = thenObservable;