import * as _ from 'underscore';
/**
* debounce decorator
*
* @debounce(delay: number, immediate: boolean = true)
* action() {
* // do some real work
* }
*/
// tslint:disable:no-invalid-this
export function debounce(delay: number, Eimmediate: boolean = true) {
return function (target: any, methodKey: string, descriptor: PropertyDescriptor) {
let innerMethod = descriptor.value;
descriptor.value = _.debounce(
function () {
return innerMethod.apply(this, arguments);
},
delay,
immediate);
return descriptor;
};
}
|