RXjs - 如何等待可观察 A 的新值,每次可观察 B 都说可以开始 'watching'

RXjs - How to wait for new value on observable A, every time observable B says its okay to start 'watching'

我有一个 observableA 流,定期发射。

当 observableB 发出时,我想从那时开始观察 ObservableA,直到它发出一个值,捕获它然后再次停止观察。现在,我将再次等待,直到 observableB 再次发出。冲洗并重复。

我可以想出几个方法来做到这一点,但是 none 其中非常 'pretty'。

在 RXjs6 中有 'correct' 方法吗?

这在某种程度上取决于您的确切用例(即如果 B 在 A 发出一次之前发出两次,您想要 2 个 A 还是 1 个 A?顺序重要吗?),但这可能有效:

obsB$.pipe(
  switchMapTo(obsA$.pipe(first()))
);

就在每次 B 发射时,切换到 A 并进行第一次发射。干净简单。如果需要,可以使用 mergeMapToconcatMapTo 不同的行为。