2016-10-06 5 views
0

Есть ли более чистый способ для _.debounce метод с использованием встроенного кода? Или это всегда занимает три шага?есть ли более чистый способ отменить метод?

@Component({ 
template: ` 
    <div (mousemove)="onChanged($event)"> 
    </div> 
` 
}) 
export class MyClass { 

    @Output() somethingChanged: EventEmitter<string> = new EventEmitter<string]>(); 

    constructor(){} 

    // 1. define method 
    triggerChanged =()=>{ 
    this.somethingChanged.emit("changed!"); 
    } 

    // 2. debounce method 
    debouncedTriggerChanged = _.debounce(this.triggerChanged, 500); 

    onChanged(){ 
     // 3. call debounced method 
     this.debouncedTriggerChanged() 
    } 
} 
+0

Вы должны быть в состоянии объединить 1 и 2, просто превратить ваш метод triggerChange в анонимный метод внутри вашего дребезга() – Keith

+0

Dooh. почему я этого не увидел? – michael

ответ

2

Как насчет этого подхода - оставлять предлагаемые методы полностью:

constructor(private elementRef: ElementRef) { 
    const eventStream = Observable.fromEvent(elementRef.nativeElement, 'mousemove') 
            .debounceTime(500); 

    eventStream.subscribe(input => this.somethingChanged.emit("changed!")); 
} 
Смежные вопросы