如何在IObservable上强制执行未来?

时间:2016-12-01 07:25:55

标签: c# system.reactive observable

在构建我的工作流程时,我经常遇到这个问题,所以问题就在这里。整个问题都是关于时间的。

当无关紧要时 - 例如当我将IObservable连接到某个GUI元素时,一切都很好。 GUI元素只是在获取新数据时更新,这就是我所关心的。

但是还有另一个类别(有两个子类别) - 没有过去的数据(当前+未来,仅限未来)。我想使用这样的IObservable(或以这种方式使用Subscribe),以便我只获得未来的数据。

当你有一些转向逻辑时,最重要的是有所作为,一个简单的例子 - 我订阅了地震指示器,如果值达到阈值,我将开始报警。现在,如果我的观察结果会向我发送旧数据,我会开始误报警。那很糟糕: - )。

那么有没有办法将IObservable限制为未来的可观察性,或以这种限制方式执行Subscribe?到目前为止,我依赖于Subject s,因为它们的行为在时间上得到了很好的定义。

总结一下 - 我希望总共有3种类型:任何时候(这里已经有IObservable),当前+未来数据和第三种 - 仅限未来数据

更新:请参阅下面的Enigmativity评论 - 假设我的生产者具有给定的语义,例如当前+未来(比如BehaviorSubject)。现在,我可以进一步传递BehaviorSubject或者我可以通过IObservable - 但在后一种情况下,我必须忍住信仰每个人都用IObservable传递所需的语义,因为我没有机会即使在运行时也强制执行它(至少我看不清楚)。

1 个答案:

答案 0 :(得分:1)

您负责在订阅者处生成/处理过去的数据。它应该是制作人的一个特征。即如果你不想获取最后一个(过去)值,那么它不应该订阅具有重放/行为语义的序列。

相反,序列应该只产生新值。如果gui的其他部分想要获得padt数据,那么他们将订阅不同的序列。现在,这个序列可能只是在同一序列上急切地描述(连接)重放,或者值可能由不同的后端查询提供。

Reactive Trader示例项目制定了一个处理这两个问题的gui