我的目标可能最容易用大理石图来解释。
我有两个 Observable,xs 和 ys。我想返回一个名为 rs 的 Observable。

xs --x---x---x---x-------x---x---x-
      \           \       \
ys ----y-----------y---y---y-------
       |           |       |
rs ----x-----------x-------x-------
       y           y       y

所以,我需要类似于 CombineLatest 的东西,除了它应该只在 xs 后跟一个 ys 时触发。该模式之外的其他 xs 或 ys 不应触发输出,应丢弃。

CombineLatest、Zip 或 And/Then/When 不执行我需要的操作,而且我找不到任何方法来指定更复杂的连接结构。

最佳答案

我最终使用了Join。

var rs = xs.Join(ys,
                 _ => xs.Merge(ys),
                 _ => Observable.Empty<Unit>(),
                 Tuple.Create);

这是一篇很好的文章,解释了 Join 的工作原理:
http://blogs.microsoft.co.il/blogs/bnaya/archive/2012/04/04/rx-join.aspx

关于c# - 合并两个 Observables,但仅当第一个 obs 紧跟在第二个 Observable 之前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13319241/

10-17 01:56