【发布时间】:2014-12-16 14:58:13
【问题描述】:
我正在尝试组合两个值共享某个键的可观察对象。
每当第一个 observable 产生一个新值时,我想产生一个新值,并结合第二个 observable 的最新值,该选择取决于第一个 observable 的最新值。
伪代码示例:
var obs1 = Observable.Interval(TimeSpan.FromSeconds(1)).Select(x => Tuple.create(SomeKeyThatVaries, x)
var obs2 = Observable.Interval(TimeSpan.FromMilliSeconds(1)).Select(x => Tuple.create(SomeKeyThatVaries, x)
from x in obs1
let latestFromObs2WhereKeyMatches = …
select Tuple.create(x, latestFromObs2WhereKeyMatches)
有什么建议吗?
显然,这可以通过订阅第二个 observable 并创建一个字典来实现,该字典具有可通过键索引的最新值。但我正在寻找一种不同的方法..
使用场景:从股票报价流计算的一分钟价格柱。在这种情况下,关键是代码,字典包含具体代码的最新卖价和买价,然后用于计算。
(顺便说一句,谢谢 Dave 和 James,这是一次非常富有成果的讨论)
(抱歉格式化,在 iPad 上很难弄好..)
【问题讨论】:
-
如果您只想在“x”可观察对象有值时在结果可观察对象中生成通知,那么“y”可观察对象的意义何在?你的问题我不清楚。也许包括一个大理石图会有所帮助。
-
代码示例只是为了提示我正在尝试做的事情..我显然没有成功..
-
是的,猜测的代码示例通常是个坏主意。具体的大理石图会更好。
-
好的,我会阅读大理石图.. 同时我重写了问题..
-
您需要更具体。它不一定必须是图表的形式,但您至少必须指定您期望的顺序。一个具体的例子会有很大帮助 - 不是查询,而是示例输入和预期输出。
标签: c# system.reactive