UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

23 lines (22 loc) 758 B
export function mergeAllObservable(subscribe, maxNumberOfSubscriptions = Number.POSITIVE_INFINITY) { maxNumberOfSubscriptions = Math.max(0, maxNumberOfSubscriptions); return emit => { let running = true; const childrenUnsubscribeFunctions = []; const unsubscribe = subscribe(childSubscribe => { childrenUnsubscribeFunctions.push(childSubscribe(emit)); if (childrenUnsubscribeFunctions.length > maxNumberOfSubscriptions) { childrenUnsubscribeFunctions.shift()(); } }); return () => { if (running) { running = false; unsubscribe(); for (let i = 0, l = childrenUnsubscribeFunctions.length; i < l; i++) { childrenUnsubscribeFunctions[i](); } } }; }; }