私は現在、最初の検索に 5 秒かかり、2 番目の検索に 2 秒かかるという問題に直面しています。通話は後に終了します。
について読んでみた
スイッチマップ
rxJs で使用しようとしましたが、私が試したところ、以前のリクエストからサブスクライブ解除されず、結果が消去されます。
ここで何か間違っている可能性がありますが、何が問題なのかを正確に指摘することはできません。
Merge には結果の変更の 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;
});
}