在构建我的工作流程时,我经常遇到这个问题,所以问题就在这里。整个问题都是关于时间的。
当无关紧要时 - 例如当我将IObservable
连接到某个GUI元素时,一切都很好。 GUI元素只是在获取新数据时更新,这就是我所关心的。
但是还有另一个类别(有两个子类别) - 没有过去的数据(当前+未来,仅限未来)。我想使用这样的IObservable
(或以这种方式使用Subscribe
),以便我只获得未来的数据。
当你有一些转向逻辑时,最重要的是有所作为,一个简单的例子 - 我订阅了地震指示器,如果值达到阈值,我将开始报警。现在,如果我的观察结果会向我发送旧数据,我会开始误报警。那很糟糕: - )。
那么有没有办法将IObservable
限制为未来的可观察性,或以这种限制方式执行Subscribe
?到目前为止,我依赖于Subject
s,因为它们的行为在时间上得到了很好的定义。
总结一下 - 我希望总共有3种类型:任何时候(这里已经有IObservable
),当前+未来数据和第三种 - 仅限未来数据的
更新:请参阅下面的Enigmativity评论 - 假设我的生产者具有给定的语义,例如当前+未来(比如BehaviorSubject
)。现在,我可以进一步传递BehaviorSubject
或者我可以通过IObservable
- 但在后一种情况下,我必须忍住信仰每个人都用IObservable
传递所需的语义,因为我没有机会即使在运行时也强制执行它(至少我看不清楚)。
答案 0 :(得分:1)
您负责在订阅者处生成/处理过去的数据。它应该是制作人的一个特征。即如果你不想获取最后一个(过去)值,那么它不应该订阅具有重放/行为语义的序列。
相反,序列应该只产生新值。如果gui的其他部分想要获得padt数据,那么他们将订阅不同的序列。现在,这个序列可能只是在同一序列上急切地描述(连接)重放,或者值可能由不同的后端查询提供。
Reactive Trader示例项目制定了一个处理这两个问题的gui