将 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 不完全是我想要的。关于如何实现这一点有什么想法吗?
谢谢!
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
两次。它需要一个名为 _A
的 A
模拟,您可以在传递给 Publish
的 lambda 中多次订阅,而只订阅一次真正的可观察对象 A
。
我想将两个序列 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 不完全是我想要的。关于如何实现这一点有什么想法吗?
谢谢!
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
两次。它需要一个名为 _A
的 A
模拟,您可以在传递给 Publish
的 lambda 中多次订阅,而只订阅一次真正的可观察对象 A
。