【问题标题】:Take a subscribed result and immediate apply it to another subscription获取订阅结果并立即将其应用于另一个订阅
【发布时间】:2019-05-31 04:01:29
【问题描述】:

使用 RxJS,我需要从 Observable 中检索单个值,然后立即使用 pluck() 将其应用于单独的订阅。

我有一个可行的解决方案,但它并不优雅。有没有办法简化或改进流程?

this.fooService.singleValue$.subscribe(value => {
   this.barService.allResults$.pipe(pluck(value)).subscribe(pluckedResult => {
       // do something with the plucked result
   });
});

【问题讨论】:

    标签: rxjs rxjs-pipeable-operators


    【解决方案1】:

    不推荐使用嵌套订阅的方式(即使用显式订阅)。 在这些类型的情况下最好使用switchMap/concatMap/mergeMap 运算符,这样您就不需要订阅两次,而只需订阅一次。

    this.fooService.singleValue$.pipe(switchMap((value => {
                        return this.barService.allResults$.pipe(pluck(value));
                    }))).subscribe(() => {
                        //do something
                    });
    

    【讨论】:

      猜你喜欢
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 2017-11-09
      • 2020-02-22
      相关资源
      最近更新 更多