angular - 使用 RxJS forkJoin 时传递参数的最佳方法

标签 angular rxjs behaviorsubject fork-join subject

因此,我有一个服务,其中包含我需要执行的三个功能。

我使用forkJoin是因为我想在收到所有人的响应后采取进一步的行动! 其中之一需要接收一个参数。

getDevices(id: string): Observable<IEquipmentRow[]> {
    const url = `${apiUrl}/${id}`;
    return this.http.get<IGetDevicesResponse>(url)
      .pipe(
        map(res => {
          return res.data;
        })
      );
}

private regions$ = this.getRegions();
private devices$ = this.getDevices();


public equipmentPreparationData$ = forkJoin({
    regions: this.regions$,
    devices: this.devices$
});

实现这一点的最佳方法是什么?也许使用RxJS Subject/BehaviorSubject? 那RxJS switchMap呢,我们可以在这里使用它吗? 我是 RxJS 新手,所以要温柔:)

最佳答案

尝试:

// Change your response type
public equipmentPreparationData$(deviceID: string): Observable<any> {
 return forkJoin({
    regions: this.regions$,
    devices: this.getDevices(deviceID)
});


private getDevices(id: string): Observable<IEquipmentRow[]> {
    const url = `${apiUrl}/${id}`;
    return this.http.get<IGetDevicesResponse>(url)
      .pipe(
        map(res => {
          return res.data;
        })
      );
}

private regions$ = this.getRegions();

这样,您就可以使用带有参数的函数并通过 getDevices 方法传递

关于angular - 使用 RxJS forkJoin 时传递参数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72358562/

相关文章:

http - 当事件被触发时,如何在所有连接的设备上立即更新 Angular2 应用程序?

angular - 如何在 Angular 4 中的循环中等待每个 HttpClient 服务调用并获取响应

Angular >2 Subject 直接订阅还是使用方法?

arrays - RxJS 限制和返回响应结果数组的最佳方式

css - 在 Angular4 的 CSS 中使用主机直接子节点

conditional-statements - RxJs:如何有条件地链接 BehaviorSubject 的 observable?

从 BehaviorSubject 创建的 Angular 2 rxjs 可观察对象不适用于 forkJoin

angular - 如何为对象创建行为主题并在另一个组件上订阅它?

javascript - 在两个组件之间共享数据,无论父组件和子组件如何 - angular2

javascript - 悬停时是否可以显示按钮的描述?