与 Rx 运行总和
一定有人已经解决了这个问题。 假设我有一个类定期引发有关值更改的事件(例如 PropertyChanged) 这个价值无非就是金钱的数量。
现在,我想利用 Rx 来获得最后 10 分钟的增量总和。例如 BufferWithTime 没有帮助,因为我总是需要最后 10 分钟。
我有什么想法可以做到这一点吗?
蒂亚 马丁
There must be somebody out there who solved that already.
Imagine I have a class that raises periodically an event about the change of a value (e.g. PropertyChanged)
That value is nothing else than amount of money.
Now, I would like to make use of Rx so that I get the sum of the increasement of that last 10mins. e.g. BufferWithTime doesn't help, as I always need the last 10mins.
Any ideas how I can do this?
tia
Martin
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
下面的解决方案涉及使用 Observable.Scan 将前十分钟内相关事件数据的状态保留在列表中。状态以元组列表的形式维护,并以
int
(金钱)和DateTime
作为值。编辑:不为每个事件返回新列表的示例:
The solution below involves keeping the state of the relevant event data in the previous ten minutes in a list using
Observable.Scan
. State is maintained as a list of tuples with anint
(money) and aDateTime
as values.EDIT: Example that doesn't return a new list for every event:
好吧,看看下面的解决方案。它建立在之前提出的解决方案的基础上,但为了效率(和可读性,我认为)而放弃了纯函数风格。它还重用内置类型
Timestamped
来跟踪时间...干杯
Well, check out the following solution. It builds on previously presented solution here, but drops the pure functional style for the sake of efficiency (and readability, i think). It reuses aswell the built in type
Timestamped
to track the timing...cheers