@lifaon/rx-js-light
Version:
Blazing fast Observables
22 lines (21 loc) • 543 B
JavaScript
import {createTimeout} from "../../../../../../misc/timer/create-timeout.mjs";
export function debounceTimeObservable(subscribe, duration) {
return emit => {
let abortTimeout = null;
const unsubscribe = subscribe(value => {
if (abortTimeout !== null) {
abortTimeout();
}
abortTimeout = createTimeout(() => {
abortTimeout = null;
emit(value);
}, duration);
});
return () => {
unsubscribe();
if (abortTimeout !== null) {
abortTimeout();
}
};
};
}