Spaces:
Runtime error
Runtime error
export function throttle<T extends (...args: any[]) => any>( | |
func: T, | |
limit: number, | |
): T { | |
let lastFunc: ReturnType<typeof setTimeout>; | |
let lastRan: number; | |
return ((...args) => { | |
if (!lastRan) { | |
func(...args); | |
lastRan = Date.now(); | |
} else { | |
clearTimeout(lastFunc); | |
lastFunc = setTimeout(() => { | |
if (Date.now() - lastRan >= limit) { | |
func(...args); | |
lastRan = Date.now(); | |
} | |
}, limit - (Date.now() - lastRan)); | |
} | |
}) as T; | |
} | |