代码之家  ›  专栏  ›  技术社区  ›  asgerhallas

接收.Net在关闭后在第一个值和下一个值上打开的窗口运算符

  •  0
  • asgerhallas  · 技术社区  · 6 年前

    我想做一个反应式扩展窗口操作符,它:

    1. 在第一个值上打开一个窗口(不是在订阅时)
    2. 在该值之后的给定超时关闭该窗口
    3. 关闭后在第一个值上打开一个新窗口

    这样就不会产生重叠,而是允许出现间隙。

    到目前为止我还没有成功。有人知道怎么做吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   asgerhallas    6 年前

    GroupByUntil似乎能做到这一点:

    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。很奇怪。