代码之家  ›  专栏  ›  技术社区  ›  supertopi Steve Harrison

Rx。NET:直到指定的计数或计时器结束

  •  1
  • supertopi Steve Harrison  · 技术社区  · 10 年前

    我有一个接收的解决方案 Observable 通知,直到指定的计数到达 时间阈值已过。此外,我需要知道发生了哪一件事。

    想知道是否有更简单的方法(可能不是 GroupByUntil )实现此功能

    _values.
    .GroupByUntil(_ => true,
                  i => Observable.Timer(Threshold, _scheduler)
                                 .Amb(i.Buffer(SpecifiedCount).Select(_ => SpecifiedCount)))
    // this is for figuring out which one happened: interval elapsed or count filled
    .SelectMany(g => g.Count())
    // Let's say if count filled first, call Foo()
    .Where( i => i == SpecifiedCount ) 
    .Subscribe( _ => Foo() )
    
    1 回复  |  直到 10 年前
        1
  •  3
  •   Panagiotis Kanavos    10 年前

    你在找什么 Observable.Buffer Method (IObservable, TimeSpan, Int32) ? 根据文件

    指示可观察序列中的每个元素进入缓冲区,该缓冲区在其已满或经过给定时间量时发送。

    你应该能够写:

    var myObservable=_values.Buffer(Threshold,SpecifiedCount);
    

    对于 Window