将一个可观察到的称为另一个是正确的吗?

卡斯珀·朱纳(Kasper Juner)

我有三个服务,每个服务都进行一个简单的API调用,并将值返回给客户端,每个API调用都依赖于从另一个获取的某些数据。

像第一个Observable一样,我订阅了获取用户数据,然后使用从中获取的数据,我可以调用Observable,它通过传递从第一个Observable获得的两个值来获取参数,然后第三个Observable需要从第一个Observable获取一个相同的数据参数从第二个得到。

所以我的代码看起来像这样:

 ngOnInit(): void {
    this.profiloService
      .profilo(this.idNegozio)
      .subscribe((profilo: Profilo) => {
        this.profilo = profilo;

        this.menuService
          .menu(profilo.idNegozio, profilo.piva, 'IT')
          .subscribe((menu: Menu[]) => {
            this.menu = menu;

            this.pluService
              .plu(profilo.idNegozio, profilo.piva, 'IT')
              .subscribe((plus: Plu[]) => {
                this.plus = plus;
                this.filterPlu(menu.id);
              });
          });
      });
  }

从另一个可观察对象订阅可观察对象是一种好方法吗?如果不是,最好的做法是什么?

小尼克

由于所有http调用都是连续的,并且您想在第3次调用中使用第一个http响应,因此您应按以下方式使用ConcateMap

ngOnInit(): void {
    this.profiloService.profilo(this.idNegozio)
        .pipe(
            concatMap((profilo: Profilo) => this.menuService.menu(profilo.idNegozio, profilo.piva, 'IT')
                .pipe(
                    // you should be able to access profilo here
                    concatMap((menu: Menu[]) => this.pluService.plu(profilo.idNegozio, profilo.piva, 'IT')
                        .map((plus: Plu[]) => {
                            this.plus = plus;
                            this.filterPlu(menu.id);
                        })
                    )
                )
            ).subscribe()

}
  

注意:请忽略任何括号错误

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将MergeMap与从另一个可观察到的数据数组一起使用-RxJs Angular

RxJava:等待另一个可观察到的结果

将可观察到的嵌套对象映射到另一个对象

当另一个发出值时,可观察到RxJS错误

根据另一个对Rx可观察到的Rx进行升采样

* ng如果异步管道与另一个可观察到的角度合并

rxjava按条件收集对象并等待另一个可观察到的对象

正确的方法将数据从一个可观察的对象传递到另一个

将RxSwift可观察结果绑定到另一个可观察结果

将可观察到的Zip列表转换为另一个可观察到的RxJava2

如何将数据从观察到的类传递到另一个类?

RxJava-控制一个可被另一个观察到

RxJava可观察到的最后一个状态

延迟发射物品,直到从另一个可观察到的物品发射出来

RXJS首先发出结果,然后等待另一个可观察到的结果

将一个可观察到的RxJS结果传递到下一个可观察到的序列中

如何使用 ngrx 将一个可观察数组投影到另一个数组?

退订可观察到的一个标签会禁用所有标签吗?

角度2:将一个可观察的“内部”合并到另一个

如何将一个可观察对象映射到另一个

将一个可观察的嵌套对象映射到另一个对象

如果一个是正确的而另一个是错误的

如何将一个可观察的KnockoutJs分配给另一个可观察的对象?

使用一个可观察对象同步另一个可观察对象

SwiftUI:当观察到的对象从另一个文件更改时,视图不更新

SwiftUI 从另一个视图更改观察到的对象

订阅另一个可观察的订阅者?

另一个rxjs可观察的重试策略

在另一个完成后使另一个可观察