1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
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) } } }