我想做一个反应式扩展窗口运算符,它:
- 在第一个值上打开一个窗口(不是订阅时(
- 在该值之后的给定超时关闭该窗口
- 关闭后在第一个值上打开一个新窗口
因此永远不会产生重叠,而是允许间隙。
到目前为止,我一直没有成功。有谁知道怎么做?
GroupByTill 似乎可以做到这一点:
public static IObservable<IObservable<T>> LazyWindow<T, TClosing>(
this IObservable<T> source, Func<IObservable<TClosing>> windowClose) => source
.GroupByUntil(x => 0, group => windowClose())
.Select(x => (IObservable<T>) x);
编辑:不要使用null
作为常量组键,它导致框架内的NRE。很奇怪。