Reputation: 4547
Is there a cleaner way to _.debounce
a method using inline code? Or does it always take 3 steps?
@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()
}
}
Upvotes: 0
Views: 198
Reputation: 23506
How about this approach - leaving your suggested methods out completely:
import { fromEvent } from 'rxjs/observable/fromEvent';
import { timer } from 'rxjs/observable/timer';
import { debounce } from 'rxjs/operators';
// ...
constructor(private elementRef: ElementRef) {
const eventStream = fromEvent(elementRef.nativeElement, 'mousemove')
.pipe(debounce(() => timer(500)));
eventStream.subscribe(input => this.somethingChanged.emit("changed!"));
}
2018-06-19: Updated to current RxJS release
Upvotes: 2