【发布时间】:2017-06-15 13:57:50
【问题描述】:
我正在尝试在输入按键事件时调用服务。
HTML
<input placeholder="enter name" (keyup)='onKeyUp($event)'>
下面是onKeyUp()函数
onKeyUp(event) {
let observable = Observable.fromEvent(event.target, 'keyup')
.map(value => event.target.value)
.debounceTime(1000)
.distinctUntilChanged()
.flatMap((search) => {
// call the service
});
observable.subscribe((data) => {
// data
});
}
从浏览器的网络选项卡中发现,它在每个按键事件上调用按键功能(正如它应该做的那样),但我想要实现的是去抖时间每次服务调用之间间隔 1 秒。此外,如果我移动箭头键移动,则会触发该事件。
【问题讨论】:
-
指定 RxJS 版本,因为版本 4 和 5 有很多不同
-
这肯定是 RxJS 5,因为他使用的是 Angular2。
-
您现在拥有的是正确的,所以您只是不知道如何调用服务或什么?
-
@martin 我可以调用该服务。但我面临的问题是对服务器的调用过多。在每个按键事件中,都会产生去抖效果。但是在去抖动时间之后,该服务被多次调用。也就是说,如果在去抖动时间之间有 10 个按键事件,则调用该服务 10 次。此外,如果我使用相同的搜索词移动左右箭头键,则会调用该服务(这是不希望的)。
-
@DDRamone "rxjs": "5.0.0-beta.12"
标签: javascript angular typescript rxjs rxjs5