export function debounce<T extends (
...args: any[]) => void>(
callback: T,
delay: number,
): (...args: Parameters<T>) => void {
let timer: ReturnType<typeof setTimeout>;
return (...args: Parameters<T>) => {
clearTimeout(timer);
timer = setTimeout(() => {
callback(...args);
}, delay);
};
}
export function throttle<T extends (
...args: any[]) => void>(
callback: T,
delay: number,
): (...args: Parameters<T>) => void {
let last = 0;
return (...args: Parameters<T>) => {
const now = Date.now();
if (now - last >= delay) {
last = now;
callback(...args);
}
};
}