@lifaon/rx-js-light
Version:
Blazing fast Observables
27 lines (26 loc) • 758 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.debounceMicrotaskObservable = void 0;
function debounceMicrotaskObservable(subscribe) {
return function (emit) {
var microtaskCount = 0;
var incrementMicrotaskCount = function () {
return microtaskCount = (microtaskCount + 1) % 0x80000000;
};
var unsubscribe = subscribe(function (value) {
var currentMicroTaskId = incrementMicrotaskCount();
queueMicrotask(function () {
if (currentMicroTaskId === microtaskCount) {
emit(value);
}
});
});
return function () {
incrementMicrotaskCount();
unsubscribe();
};
};
}
exports.debounceMicrotaskObservable = debounceMicrotaskObservable;