Rxjs阻止订阅中的订阅

问题描述 投票:0回答:1

我有一组对象。我需要获取ID数组,然后调用2个API,然后关闭模式窗口。

我的代码是:

from(this.alerts)
      .pipe(map(alert => alert._id))
      .subscribe(alertIds => zip(
          this.alertApi.someCall1(alertIds, ...),
          this.alertApi.someCall2(alertIds, ...),
        ).subscribe(() => {
          this.activeModal.close();
        }),
      );

您对防止subscribe内的subscribe有任何想法吗?

javascript angular rxjs rxjs6 subscribe
1个回答
0
投票

使用switchMap rxjs运算符来避免嵌套订阅。

from(this.alerts)
      .pipe(
         map(alert => alert._id),
         switchMap(alertIds => zip(
           this.alertApi.someCall1(alertIds, ...),
           this.alertApi.someCall2(alertIds, ...)
         ))
      )
      .subscribe(() => {
          this.activeModal.close();
      );

可在here中找到有关switchMap运算符的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.