trilium/src/scripts/common/debounce.ts
2023-09-27 23:18:03 -04:00

11 lines
418 B
TypeScript

export default function debounce<T extends (...args: unknown[]) => unknown>(executor: T, delay: number) {
let timeout: NodeJS.Timeout | null;
return function(...args: Parameters<T>): void {
const callback = () => {
timeout = null;
Reflect.apply(executor, null, args);
};
if (timeout) clearTimeout(timeout);
timeout = setTimeout(callback, delay);
};
}