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



我想在.NET中将两个序列d和A与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的任何元素类型。

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

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

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

相关内容

  • 没有找到相关文章

最新更新