Angular Method Decorator (debounce)

JS
S
JavaScript

Example 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