是否有一个Rx框架函数会创建一个在时间跨度结束后结束的observable?

时间:2011-09-23 09:11:14

标签: system.reactive reactive-programming

有些观察者只是贫困。他们希望你倾听,倾听并倾听他们所说的一切,也许一直都是这样!如果我真的只能处理几秒钟的事件怎么办?我可以写点像

mouseMoves.TakeFor(TimeSpan.FromSeconds(2))

从概念上讲,这将创建一个主题,它将传递事件直到某个时间过去,然后取消订阅基础的observable并标记其自己的序列完成。我怀疑你可以手动编写它,但似乎必须有一些现有的运营商这样做。我原本希望Observable.TimeOut做我想做的事,例如使用

mouseMoves.Timeout(TimeSpan.FromSeconds(2), Observable.Empty<T>())

但我认为如果观察之间的时间跨度超过给定值,它正在做的是超时可观察量。这也很有用,但不是我想要的。

1 个答案:

答案 0 :(得分:4)

听起来你需要TakeUntil

var source = Observable.FromEventPattern(...);

source.TakeUntil(Observable.Timer(TimeSpan.FromSeconds(2))
   .Subscribe(_ => {});