是否有一个Rx框架函数,它将创建一个可观察对象,它在一个时间跨度过去后结束



一些可观察对象就是如此需要。他们想要你听,听,听他们说的一切,也许是所有的时间!如果我真的只能处理几秒钟的事件呢?我可以写像

这样的东西吗?
mouseMoves.TakeFor(TimeSpan.FromSeconds(2))

从概念上讲,这将创建一个主题,该主题将沿着事件传递直到特定时间过去,然后取消订阅底层可观察对象并标记自己的序列完成。我怀疑你可以这样手写,但似乎一定有一些现有的运算符可以做到这一点。我希望Observable.TimeOut会做我想要的,例如使用

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

但我认为它所做的是,如果观测之间的时间跨度长于给定值,则将可观测值计时。这也很有用,但不是我想要的。

听起来你需要TakeUntil:

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

相关内容

  • 没有找到相关文章

最新更新