【发布时间】:2021-09-30 04:39:30
【问题描述】:
我在 Angular 组件中有以下代码来捕获 keyup 事件并在发生这种情况时做出响应。用户可以离开页面,然后返回并执行相同的操作数百次。
fromEvent(this.input?.nativeElement, 'keyup')
.pipe(
pluck<unknown, string>('target', 'value'),
filter((searchTerm: string) => (searchTerm?.length > 2 || searchTerm?.length == 0)),
throttleTime(200),
debounceTime(300),
distinctUntilChanged()
)
.subscribe(search => {
this.setPageIndex();
this.TriggerLoadUsers(search, 'asc', 0, 10);
});
这是另一种模式,其中Subscription 的显式分配完成,然后在角度生命周期方法的ngOnDestroy 中取消订阅。
public keyupEventsSub$!: Subscription;
this.keyupEventsSub$ = fromEvent(this.input?.nativeElement, 'keyup')
.pipe(
pluck<unknown, string>('target', 'value'),
filter((searchTerm: string) => (searchTerm?.length > 2 || searchTerm?.length == 0)),
throttleTime(200),
debounceTime(300),
distinctUntilChanged()
)
.subscribe(search => {
this.setPageIndex();
this.TriggerLoadUsers(search, 'asc', 0, 10);
});
this.keyupEventsSub$.unsubscribe();
- 遵循明确分配
Subscription的第二种模式subscribed和unsubscribed是否有优势? - 对任何
Observable订阅使用相同的模式是否有任何副作用? - 是否存在不需要显式赋值的更好模式?
【问题讨论】:
标签: rxjs