kaj*_*l16 0 rxjs typescript angular-material angular
我正在编写一个程序,该程序调用使用文本框在表格上显示数据的方法。问题是它每次调用程序超过 10 次。有没有办法避免这种情况?
这是文本框:
<input #input matInput placeholder="Search data" (keyup)="onKeypressEvent($event)">
Run Code Online (Sandbox Code Playgroud)
这是我正在调用的方法:
onKeypressEvent(event: any){
fromEvent(this.input.nativeElement,'keyup')
.pipe(
debounceTime(150),
distinctUntilChanged(),
tap(() => {
this.paginator.pageIndex = 0;
this.loadData();
})
)
.subscribe();
}
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为在每次按键时您都会创建一个新链,因此debounceTime()没有任何可去抖的东西。而是创建一个主题并按下按键。然后在构造函数或 onInit() 中只进行一个订阅:
keyPress$ = new Subject();
...
keyPress$.pipe(
debounceTime(150),
distinctUntilChanged(),
tap(() => {
this.paginator.pageIndex = 0;
this.loadData();
}),
).subscribe();
...
onKeypressEvent(event: any) {
this.keyPress$.next(event);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |