17 lines
396 B
TypeScript
17 lines
396 B
TypeScript
export function Debounce (config: { timeoutMS: number }) {
|
|
let timeoutRef: NodeJS.Timeout
|
|
|
|
return function (_target, _key, descriptor: PropertyDescriptor) {
|
|
const original = descriptor.value
|
|
|
|
descriptor.value = function (...args: any[]) {
|
|
clearTimeout(timeoutRef)
|
|
|
|
timeoutRef = setTimeout(() => {
|
|
original.apply(this, args)
|
|
|
|
}, config.timeoutMS)
|
|
}
|
|
}
|
|
}
|