2

私は現在、最初の検索に 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;
      });
  }
4

3 に答える 3