2

有些 observables 实在太需要了。他们希望你听,听,听他们要说的一切,也许永远!如果我真的只能处理几秒钟的事件怎么办?我可以写类似的东西吗

mouseMoves.TakeFor(TimeSpan.FromSeconds(2))

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

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

但我认为如果观察之间的时间跨度长于给定值,它正在做的是超时观察。这也很有用,但不是我所追求的。

4

1 回答 1

4

听起来你需要TakeUntil

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

source.TakeUntil(Observable.Timer(TimeSpan.FromSeconds(2))
   .Subscribe(_ => {});
于 2011-09-23T09:27:20.080 回答