UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

30 lines (29 loc) 669 B
export function conditionalObservable(subscribe, condition) { return emit => { let running = true; let unsubscribe = null; let lastValue; const _unsubscribe = () => { if (unsubscribe !== null) { unsubscribe(); unsubscribe = null; } }; const unsubscribeOfCondition = condition(value => { if (value !== lastValue) { lastValue = value; _unsubscribe(); if (value && running) { unsubscribe = subscribe(emit); } } }); return () => { if (running) { running = false; unsubscribeOfCondition(); _unsubscribe(); } }; }; }