观测值的发射值取决于其他观测值

时间:2019-05-20 16:32:53

标签: javascript angular rxjs observable

我有两个科目。

const a$ = new Subject<number>();
const b$ = new Subject<string>();

我希望有第三个可观察到的东西,它是基于上述两个主题的。因此,取决于发出的主题及其值,我想进行计算并发出一些值。

我尝试过:

const result$ = a$.pipe(merge(b$))

但是,如果我在map之后添加merge,则无法检测到可观察到的价值。此外,combineLatest也不是这种情况,因为即使没有发出其中一个主题,我也想得到结果。

1 个答案:

答案 0 :(得分:1)

要区分来自何处,可以映射输入值:

import {merge} from 'rxjs';

const result$ = merge(
  a$.pipe(map(v => ({a: v})),
  b$.pipe(map(v => ({b: v}))
)

您已经注意到,我在这里使用了静态merge运算符。在这种情况下看起来更具可读性