Ric*_*chK 7 c# system.reactive
鉴于IObservable<T>是否有一种使用Throttle行为的方法(在添加项目时重置计时器,但让它返回在该时间内添加的所有项目的集合?
Buffer它提供了类似的功能,它可以IList<T>在每个时间跨度或计数时将数据分块.但是每次添加项目时我都需要重置时间.
我在这里看到过类似的问题,反应式扩展是否支持滚动缓冲区?,但答案看起来并不理想,而且有点旧,所以我想知道Rx-Main的发布版现在是否支持这个功能.
Col*_*nic 10
正如我在另一篇文章中回答的那样,是的,你可以!使用Throttle和Window方法Observable:
public static IObservable<IList<T>> BufferUntilInactive<T>(this IObservable<T> stream, TimeSpan delay)
{
var closes = stream.Throttle(delay);
return stream.Window(() => closes).SelectMany(window => window.ToList());
}
Run Code Online (Sandbox Code Playgroud)