仅在发出另一个可观察物时激活可观察物

时间:2020-06-26 02:34:54

标签: rxjs

这里是场景:有两个可观察的流(AB)。我只想在B发出至少一次之后才从A发出信号。

我尝试了combineLatest,但是问题是当AB发出时,合并的流也发出了。我只希望此流在B发出时发出,我不需要A中的值。我只需要发出一次即可。

这就是我要寻找的:

---a---a-- A
-b---b---- B
---b-b---- required

2 个答案:

答案 0 :(得分:1)

我认为这应该可行:

combineLatest(a$.pipe(first()), b$)
  .pipe(
    map(([a, b]) => b)
  )

combineLatest将在a$b$都被发射时第一次发射,然后由于{{1}而仅在b$发射时发射。 }。

答案 1 :(得分:0)

最新的组合发射一次,然后切换回b。

combineLatest(a$, b$).pipe(
  map(([a, b]) => b),
  switchMap(_ => b$)
);