我目前面临的一个问题是,第一次搜索可能需要5秒钟,而第二个搜索则需要2秒钟,问题是,第一次搜索需要更长的时间,将“擦除”此后执行的请求的结果,因为通话结束。
我试图阅读有关
switchMap
在rxJs中并尝试使用它,但是从我的尝试来看,它不会取消订阅先前的请求并清除了结果。
我可能在这里做错了什么,但我无法确切指出问题所在。
合并在结果中有3个更改源(分页,排序或新的搜索条件),对sendSearchCriteria的调用返回使用的数据。
sendSearchCriteria返回一个 Observable
有什么想对您的,我做错了吗?
感谢您的帮助,
private loadDogsResults = (filtersInformation: FilterSearchCriteria) => {
merge(this.sort.sortChange, this.paginator.page, of(filtersInformation))
.pipe(
distinctUntilChanged(),
tap(() => (this.isLoading = true)),
switchMap(() => this.sendSearchCriteria(filtersInformation)),
//mergeMap(() => this.sendSearchCriteria(filtersInformation)),
map(data => this.formatResults(data)),
finalize(() => (this.isLoading = false)),
catchError(error => this.handleError(error)),
takeUntil(this._onDestroy$)
)
.subscribe((result: any[]) => {
if (result.length > 0) {
this.setDisplayedColumns(result[0]);
}
this.isLoading = false;
});
}
慕盖茨4494581
相关分类