@lifaon/rx-js-light
Version:
Blazing fast Observables
31 lines (30 loc) • 655 B
JavaScript
import {freeze} from "../../../../../misc/helpers/freeze.mjs";
export function createUnicastSource() {
let _emitFunction = null;
const emit = value => {
if (_emitFunction !== null) {
_emitFunction(value);
}
};
const subscribe = emit => {
if (_emitFunction === null) {
let running = true;
_emitFunction = emit;
return () => {
if (running) {
running = false;
_emitFunction = null;
}
};
} else {
throw new Error(`Max one observer allowed`);
}
};
return freeze({
getObserver: () => {
return _emitFunction;
},
emit,
subscribe
});
}