0

目標は、複数の保存リクエストを作成し、別の ajax リクエストを使用して新しいリストを取得することです。私が欲しいもののように見える次のものがありますが、より良い方法があるかどうか疑問に思っていました

of(1,2,3)
      .pipe(
        concatMap(vals => vals),
        concatMap(val => this.ajax.save(val)),
        takeLast(1)
      )
      .pipe(
        switchMap(() => this.ajax.get()),
        take(1)
      )
      .subscribe(result => {
        // do stuff
      });

保存の結果は重要ではありません。保存後に新しい結果を取得することは、使用する必要がある結果です。takeLast(1) を使用したのは、そうしないと、リスト内のすべての項目に対して get 要求が発生するためです。上記の例では、3 つの get リクエストがあり、すべての保存が完了した後にのみリストを取得したいと考えています。

4

1 に答える 1

0

どうですか

combineLatest([1,2,3].map(val => this.ajax.save(val))).pipe(
  switchMap(resultsArr => this.ajax.get())
).subscribe(newVal => {});
于 2020-07-28T00:36:59.717 に答える