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) 因为如果我不这样做,列表中的每个项目都会有一个获取请求。在上面的示例中,我将有 3 个获取请求,并且我只想在所有保存完成后获取列表。

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 回答