Angular Method Decorator (debounce)
JS
S
JavaScriptExample of Method Decorator usage (for debounce scenarios)
1// debounce.decorator.ts
2export function debounce(delay: number = 300): MethodDecorator {
3 return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
4 let timeout = null
5
6 const original = descriptor.value;
7
8 descriptor.value = function (...args) {
9 clearTimeout(timeout);
10 timeout = setTimeout(() => original.apply(this, args), delay);
11 };
12
13 return descriptor;
14 };
15}
16
17// Usage
18import { debounce } from './debounce.decorator';
19...
20@HostListener('window:resize')
21@debounce(500)
22ngDoCheck() {}Created on 11/21/2017