Files
remark42/frontend/app/utils/debounce.ts
T
2021-05-06 15:55:46 -05:00

12 lines
416 B
TypeScript

type FnType<T extends unknown[]> = (...args: T) => unknown;
export function debounce<T extends unknown[]>(fn: FnType<T>, wait = 1000): (...args: Parameters<FnType<T>>) => void {
let timeout: number | undefined;
return function (this: unknown, ...args): void {
const laterCall = (): unknown => fn.apply(this, args);
window.clearTimeout(timeout);
timeout = window.setTimeout(laterCall, wait);
};
}