首页 > 解决方案 > RXJS Observables 如何从 mergeMap 访问多个可观察值

问题描述

我有一个使用多个 rxjs 运算符的 rxjs 函数,我最终需要从中返回一个 observable。下面的示例代码中详细说明了我的挑战,并详细说明了我正在尝试做的事情。我怎样才能做到这一点?我需要重写吗?如果没有我试图从 Observable3 访问值的更改,一切都会按需要进行。我已经尝试了很多事情,包括withLatestFrom用来引入可观察到的三个,combineLatest但也没有运气。

Observable3 = of({obs3Prop1: value1, obs3Prop2: value2})

    this.Observable1
        .pipe(
            switchMap(param1) => {
                return this.getCount(param1);
            }), 
            mergeMap((param2: number) => 
                this.Observable2
                .pipe(
                    //inside this pipe, return another observable from here using some rxjs operators
                    //where I need access to param2 
                    //but I also need access to the value from Observable3
                )
            ),
        )

标签: rxjsrxjs-observables

解决方案


forkJoin()假设所有源 Observables 完成,您似乎可以使用:

mergeMap((param2: number) => 
  forkJoin([
    Observable3,
    this.Observable2,
  ]).pipe(
    mergeMap(([o3params, o2params]) => this.makeCall(o3params.param1, o2params)),
  )
),

推荐阅读