我正在为我的应用程序使用3个端点,其中1个端点取决于其他端点的响应(即一个列表),然后我需要使用列表中的每个项目才能使用其他端点,我们将它们epAepBepCepA返回一个列表,然后我在epB上使用此列表,类似epA.Foreach( x => epB(x)) ,我试图将epBepC合并到一个合并的列表中,因为两者共享相似的字段。

我的问题是,我使用角度和可观察对象还太陌生,我不知道是否有一种方法可以将这些epB和epC结果结合起来(不提及当前,我订阅了可观察对象并将其值分配给我需要的其他对象)...如果有人可以帮助我,将不胜感激。 抱歉,如果这太乱了,我在这里发布和角度编码的经验很少。

这是我目前拥有的一些代码...有点难看,但是可以完成工作

this._serverRequests.epA(this._Token).subscribe(x => {
    this.servers = x;
    x.forEach(server => 
      this._serverRequests.epB(server)
      .subscribe(info => {
         this.serverInfo = info;
         this.GridModel.data = info['States'];
         this.GridModel.data.forEach(se => {
             se.Start = this.formatValuesPipe.transform(se.Start, 'grid');
         });
         this.GridModel.data.map( o => {
            o.ServerUrl = server;
         });
       })
     );
},
   error => this.errMsg = <any>error
);

this._serverRequests.epC(this._Token).subscribe(lic => {
   this.licensesList = lic;
   this.licensesModel.data = this.licensesList.LicenseUsageList;
   this.licensesModel.data.forEach(li => {
      li.AcquisitionTime = this.formatValuesPipe.transform(li.AcquisitionTime, 'grid'); 
   });
});

我也尝试过forkjoin,但是由于epA返回一个列表,所以我不知道如何调用forkjoin中的每个项目

#1楼 票数:0

您可以将第一个调用的响应映射到调用数组,然后使用CombineLatest给出所有响应的数组。

this._serverRequests.epA(this._Token).pipe
  map(server => this._serverRequests.epB(server)),
).subscribe(requests => {
  combineLatest(requests).subscribe(results => {
    // You have an array of the multiple results here
  })
});

  ask by Pablo Arenas Grimaldo translate from so

未解决问题?本站智能推荐:

1回复

从可观察对象解析数组中的对象

我有一个关于解析数组中的 observable 的问题。 (使用 Angular 11) 首先,我想描述一下场景。 假设我们有一个带有 ag-grid 的组件 table.component.html 其中 rowData 类似于 还没有什么特别的——但是, valueBefore和va
5回复

Angular 模板中可观察对象上的 ObjectUnsubscribedErrorImpl

我正在使用 Angular 11,并且我正在使用异步管道访问组件模板中的一个 observable。 路线的第一次加载,一切正常。 没有错误。 当我离开页面并返回时,出现以下错误: 组件模板:<RM-map *ngIf="(layers$ | async) as layer" [layer
1回复

Angular 7变换对新可观察对象的可观察响应

我有一个像这样的响应的API,我正在使用rxjs observables 我需要将其转换为新的json格式,以便获得所需的响应格式。 我已经试过pipe(map()),但是却收到错误,提示类型' Observable<void> '不能分配给类型' Observable
1回复

在 RxJS 可观察对象的订阅者完成后执行函数

在 RxJS 中,我需要在执行给定 observable 的所有订阅后执行一些代码。 我需要在每个触发的next通知之后以及在所有订阅者功能完成之后(不仅是在 observable 完成时一次)执行此操作。 换句话说,我需要一个像tap()这样的操作符,它在所有订阅者都被执行之后运行。 有办法吗?
1回复

Rxjs 可观察问题

我已经声明了一个正在使用的主题,并尝试通过使用“subject.next()”向后端发出 GET 调用来推送响应。还使用“subject.asObservable()”为该主题分配了一个可观察的对象并订阅了两个不同组件(父组件和路由器出口子组件)中的可观察对象。 问题是 observable 只为一
4回复

没有可观察的服务

我很难理解,为什么我需要使用 observable。 我有一个非常简单的商店,如下所示 如果我要使用 observable,上述服务就可以正常工作并且完全相同 我的问题是,为什么我要使用 observable ,简单的服务属性工作得很好! 或者我错过了大局! 请帮我理解。
1回复

等待两种返回可观察角度的方法

我有两种方法可以进行api调用并返回Observable。 然后,我有以下两种方法: 最后一个 我想method4等待method3完成所有是为了进行要求,但我不知道如何实现它的角8.任何提示吗?
1回复

Angular8 RXJS CanDeactivate 在停用前等待可观察的结果

我正在尝试使用 CanDeactivate 防护来检测用户何时离开组件。 目的是 #1 检查当前用户是否拥有记录上的“正在编辑”锁,#2 如果是,则调用 observable 来更新数据库。 我的代码部分工作,但存在锁并不总是释放的竞争条件,可能是因为在调用下一个 return 语句时订阅this