Files
fc0b0059-78ac-4beb-8b93-51f…/src/utils/throttle.ts
Nikolay Pecheniev d1ec41fa4a Initial commit
2026-04-09 17:19:51 +03:00

24 lines
539 B
TypeScript

export function throttle<T extends (...args: unknown[]) => void>(
func: T,
wait: number
): (...args: Parameters<T>) => void {
let inThrottle: boolean = false;
let lastArgs: Parameters<T> | null = null;
return function (...args: Parameters<T>) {
if (!inThrottle) {
func(...args);
inThrottle = true;
setTimeout(() => {
inThrottle = false;
if (lastArgs) {
func(...lastArgs);
lastArgs = null;
}
}, wait);
} else {
lastArgs = args;
}
};
}