Files
ag-beats/public/utils.ts
2025-12-20 16:32:05 +02:00

22 lines
578 B
TypeScript

// A simple debounce function
export const debounce = <F extends (...args: any[]) => any>(func: F, waitFor: number) => {
let timeout: ReturnType<typeof setTimeout> | null = null;
const debounced = (...args: Parameters<F>) => {
if (timeout !== null) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(() => func(...args), waitFor);
};
const cancel = () => {
if (timeout !== null) {
clearTimeout(timeout);
timeout = null;
}
};
return [debounced, cancel] as [(...args: Parameters<F>) => void, () => void];
};