繁体   English   中英

如何使用Rx检索序列生成器的生命周期操作?

[英]How to retrieve lifetime operations of a sequence generator using Rx?

当我收到有关序列更改的通知时,我需要使用Rx检索序列先前生成的所有对象以及新对象的方法。 我认为这种情况并不常见,因为大多数系统只需要未处理的条目,但是我的情况需要整个旧的和新的值集合才能起作用。

是否有可能以某种方式实现这一目标? 我找不到任何类似的示例,而且似乎没有方法可以做到这一点。

您可以为此使用Scan扩展方法

IObservable<T> source = ...;
IObservable<List<T>> history = source
    .Scan(new List<T>(), (list, item) => { list.Add(item); return list; });

如果source发出令牌ABC
然后history发出令牌[A][AB][A, B, C]

如果您不希望history发出的所有值都是相同的List<T> ,则可以稍微修改对Scan的调用:

IObservable<List<T>> history = source
    .Scan(new List<T>(), (list, item) => list.Concat(new[]{ item }).ToList());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM