有些观察者只是贫困。他们希望你倾听,倾听并倾听他们所说的一切,也许一直都是这样!如果我真的只能处理几秒钟的事件怎么办?我可以写点像
mouseMoves.TakeFor(TimeSpan.FromSeconds(2))
从概念上讲,这将创建一个主题,它将传递事件直到某个时间过去,然后取消订阅基础的observable并标记其自己的序列完成。我怀疑你可以手动编写它,但似乎必须有一些现有的运营商这样做。我原本希望Observable.TimeOut
做我想做的事,例如使用
mouseMoves.Timeout(TimeSpan.FromSeconds(2), Observable.Empty<T>())
但我认为如果观察之间的时间跨度超过给定值,它正在做的是超时可观察量。这也很有用,但不是我想要的。
答案 0 :(得分:4)
听起来你需要TakeUntil
:
var source = Observable.FromEventPattern(...);
source.TakeUntil(Observable.Timer(TimeSpan.FromSeconds(2))
.Subscribe(_ => {});