Ubuntu
const DEFAULT_DEBOUNCE_DELAY = 300;
export default function debounce(
fn: (this: This, ...args: Args) => void,
delayInMs = DEFAULT_DEBOUNCE_DELAY,
): (this: This, ...args: Args) => void {
let timeout: ReturnType;
return function wrapper(this: This, ...args: Args): void {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(() => {
fn.call(this, ...args);
}, delayInMs);
};
}