withLatestFrom用于可观察的热点

时间:2020-09-10 12:00:26

标签: angular rxjs

a$.pipe(withLatestFrom(b$))仅在b$可以冷观察(或Behavior / ReplaySubject)时发出值。
但是,如果a$b$都是热观测值怎么办?
我这种情况下观察到的结果永远不会发出

我认为解决办法是

b2$ = b$.pipe(publishReplay(1))
b2$.connect()

然后

a$.pipe(withLatestFrom(b2$))

但是对我来说看起来不对。什么是解决此问题的合适方法?

1 个答案:

答案 0 :(得分:1)

a$.pipe(withLatestFrom(b$))将在b$首先发出而a$其次发出时发出。

如果希望结果观测对象在a$尚未发射的同时就发射b$,则可以使用startWithb$添加初始值

a$.pipe(
  withLatestFrom(b$.pipe(startWith(null)))
)