收集序列中的发射值

Collect Emitted Values in a Sequence

我有 2 个 observables AB 可以随时发射。但是只有当 A 发出一个新值然后 B 也发出一个新值时,我才收集这两个值。如果 B 只是发出新值而没有 A 先发出新值,我不会收集任何值。

我知道 concatMap 可能有用,但它需要之前的可观察对象才能完成,而在我的情况下,直到所有内容都被销毁之前,它们都不会完成。

这可以建模为将 A 的每个元素投影到 B 的第一个到达元素,当新的 A 到达时丢弃任何先前对 B 的订阅,例如:

A.pipe(
  switchMap(x => B.pipe(
    first(),
    map(y => ({ a: x, b: y }))
  )
)