将 Rx 序列与一个序列配对,作为控制何时发布新输出的主人

Pair Rx Sequences with one sequence as the master who controls when a new output is published

我想将两个序列 D 和 A 与 .NET 中的 Reactive Extensions 配对。生成的序列 R 应该将 D 和 A 配对,只要新数据出现在 D 上,它就会与 A 的最新值配对,如下图所示:

D-1--2---3---4---
A---a------b-----
R----2---3---4---
     a   a   b   

CombineLatest 或 Zip 不完全是我想要的。关于如何实现这一点有什么想法吗?

谢谢!

你想要Observable.MostRecent:

var R = A.Publish(_A => D.SkipUntil(_A).Zip(_A.MostRecent(default(char)), Tuple.Create));

char 替换为 A observable 的任何元素类型。

从概念上讲,上面的查询与下面的查询相同。

var R = D.SkipUntil(A).Zip(A.MostRecent(default(char)), Tuple.Create));

此查询的问题在于订阅 R 会订阅 A 两次。这是不受欢迎的行为。在上面的第一个(更好的)查询中,Publish 用于避免订阅 A 两次。它需要一个名为 _AA 模拟,您可以在传递给 Publish 的 lambda 中多次订阅,而只订阅一次真正的可观察对象 A