UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

21 lines (20 loc) 545 B
export function debounceMicrotaskObservable(subscribe) { return emit => { let microtaskCount = 0; const incrementMicrotaskCount = () => { return microtaskCount = (microtaskCount + 1) % 0x80000000; }; const unsubscribe = subscribe(value => { const currentMicroTaskId = incrementMicrotaskCount(); queueMicrotask(() => { if (currentMicroTaskId === microtaskCount) { emit(value); } }); }); return () => { incrementMicrotaskCount(); unsubscribe(); }; }; }