如果在特定的时间范围内没有收到值,我想结束基于事件的可观察。
// This will go on forever because it is a hot
// observable based on an event
// If a value has not been produced in, say, 2 seconds
// I would like to stop it and raise an OnCompleted
var observable = Observable.FromEvent(...);
我可以这样做TakeUntil
,但这将是从订阅开始的绝对时间段。我想要的是,如果在上一个值生成后的2秒内没有返回值,那么停止并引发OnCompleted
事件。
如果在2秒钟内可观察到的对象从未生成任何值,则也停止并引发OnCompleted
事件。
如果客户端代码不必保持上一个值生成时间的状态,我该如何做到这一点?
试试这个:
var query = observable.Timeout(TimeSpan.FromSeconds(2.0), Observable.Empty<int>());
只需将int
替换为任何类型的可观察源即可。