Rx GroupByUntil与限制计时器重生

时间:2014-12-11 15:20:07

标签: c# system.reactive

Rx GroupByUntil文档说明

  

当出现与回收组具有相同键值的新元素时,   该小组将重生,并有新的终身要求。

我对这段代码有疑问。

myObservable.GroupByUntil(
                    selectKey,
                    g => g.Throttle( selectTimer(g.Key),
                    throttlingScheduler))

我的限制计时器selectTimer在该组被重生时不会被调用。使用相同组密钥的新元素。相反,元素灌浆继续使用相同的节流计时器。

当出现相同键值的元素时,有没有办法刷新节流定时器?

1 个答案:

答案 0 :(得分:5)

我相信你是误解GroupByUntil。它只在新构造组时调用持续时间选择器。当duration选择器返回的observable产生一个值时,它就会结束该组。下一次项目使用该组密钥到达时,它将创建一个新组(并再次调用持续时间选择器)。

听起来你的实际问题是Throttle。您想知道如何动态调整油门计时器。尝试Throttle的重载,它带有一个节流持续时间选择器,每次新项目到达时它都会调用它。假设selectTimer返回TimeSpan

g => g.Throttle(item => Observable.Timer(selectTimer(g.Key), throttlingScheduler))