收集序列中的发射值
Collect Emitted Values in a Sequence
我有 2 个 observables A
和 B
可以随时发射。但是只有当 A
发出一个新值然后 B
也发出一个新值时,我才收集这两个值。如果 B
只是发出新值而没有 A
先发出新值,我不会收集任何值。
我知道 concatMap
可能有用,但它需要之前的可观察对象才能完成,而在我的情况下,直到所有内容都被销毁之前,它们都不会完成。
这可以建模为将 A 的每个元素投影到 B 的第一个到达元素,当新的 A 到达时丢弃任何先前对 B 的订阅,例如:
A.pipe(
switchMap(x => B.pipe(
first(),
map(y => ({ a: x, b: y }))
)
)
我有 2 个 observables A
和 B
可以随时发射。但是只有当 A
发出一个新值然后 B
也发出一个新值时,我才收集这两个值。如果 B
只是发出新值而没有 A
先发出新值,我不会收集任何值。
我知道 concatMap
可能有用,但它需要之前的可观察对象才能完成,而在我的情况下,直到所有内容都被销毁之前,它们都不会完成。
这可以建模为将 A 的每个元素投影到 B 的第一个到达元素,当新的 A 到达时丢弃任何先前对 B 的订阅,例如:
A.pipe(
switchMap(x => B.pipe(
first(),
map(y => ({ a: x, b: y }))
)
)