kun-galgame-vue/src/utils/debounce.ts
2023-10-23 18:34:28 +08:00

21 lines
475 B
TypeScript

/*
* Debounce function that takes a function and a delay time as parameters
*/
export type DebouncedFunction<T extends (...args: any[]) => any> = (
...args: Parameters<T>
) => void
export function debounce<T extends (...args: any[]) => any>(
func: T,
delay: number
): DebouncedFunction<T> {
let timeoutId: ReturnType<typeof setTimeout>
return (...args) => {
clearTimeout(timeoutId)
timeoutId = setTimeout(() => {
func(...args)
}, delay)
}
}