UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

28 lines (27 loc) 654 B
export function sourceObservablePipe(getSource) { return subscribe => { let unsubscribe; let observersCounts = 0; const source = getSource(); return emit => { let running = true; observersCounts++; const unsubscribeSource = source.subscribe(emit); if (observersCounts === 1) { unsubscribe = subscribe(value => { source.emit(value); }); } return () => { if (running) { running = false; unsubscribeSource(); observersCounts--; if (observersCounts === 0) { unsubscribe(); } } }; }; }; }