kma*_*oor 4 rxjs debouncing angular rxjs6
使用angular 7和rxjs 6:
<input (input)="onChange($event.target.value)">
Run Code Online (Sandbox Code Playgroud)
为什么以下不去抖动?
onChange(val: string) {
of(val)
.pipe(
debounceTime(300)
).subscribe(valx => {
console.log(valx);
});
}
Run Code Online (Sandbox Code Playgroud)
但这确实:
searchTerm$: Subject<string> = new Subject();
this.searchTerm$.pipe(
debounceTime(300),
).subscribe(val => {
console.log(val);
});
onChange(val: string) {
this.searchTerm$.next(val);
}
Run Code Online (Sandbox Code Playgroud)
这不是因为of(). 在您的第一个示例中,每次调用onChange($event.target.value)时都会创建一个带有自己debounceTime和自己的计时器的新链。所以它永远不会去抖动任何东西,因为每个输入变化都有自己的链。
但是,如果您使用Subject(如在您的第二个示例中)并推送所有事件,this.searchTerm$.next(val)那么您只有一个链,其中每个事件都被推送到顶部,然后按预期进行去抖动。
| 归档时间: |
|
| 查看次数: |
2266 次 |
| 最近记录: |