RX - 指定速率的通知

时间:2014-06-19 12:42:16

标签: system.reactive

我是RX的新手,我遇到了“塑造通知流量”的问题。

我想知道如何通过给定的吞吐量通知观察者;也就是说,我希望在自上次“OnNext”调用后经过一段给定时间之前调用“OnNext”方法。

为了完整起见:我希望通知序列中的每个元素。

例如,0.2符号/刻度:

Tick:        0         10        20        30
             |---------|---------|---------|
Producer:    A---B------C--D-----E-------F
Result:      A    B     C    D    E      F
             0    5     11   16   21     28

有没有办法构建可观察对象,或者我必须实现自己的主题?

非常感谢

1 个答案:

答案 0 :(得分:5)

是的,只需将每个值转换为异常进程,直到延迟时间才完成,然后将它们连接起来。

var delay = Observable.Empty<T>().Delay(TimeSpan.FromSeconds(2));
var rateLimited = source
    .Select(item => Observable.Return(item).Concat(delay))
    .Concat();