我有两个流:
const sourceOne = of(1, 2, 3);
const sourceTwo = of(4, 5, 6);
const example = sourceOne.pipe(concat(sourceTwo)); //123456
如您所见,我已将它们无条件级联。
但是事实证明,只有sourceOne
中的第一项是“偶数”时,才需要连接它们。 (%2==0
)
问题:
如何通过添加有关第一个流的条件将sourceTwo
连接到sourceOne
?
我知道我可以创建一个将通过管道传递的外部方法,但我认为这不是RXJS的实现方式。
答案 0 :(得分:2)
如果sourceOne
是冷酷的Observables(如您的示例所示),则可以按照以下方式尝试一些方法
const example = sourceOne.pipe(
take(1),
switchMap(d => d % 2 === 0 ? sourceOne.pipe(concat(sourceTwo)) : empty()),
)
如果相反sourceOne
是热门观察站,则可以尝试类似的操作
const sourceOneHot = of(1, 2, 3).pipe(share());
const exampleHot = sourceOneHot.pipe(
take(1),
switchMap(d => d % 2 === 0 ? concat(of(d), sourceOneHot, sourceTwo) : empty()),
);
要创建可观察的热点,可以使用