如果在特定时间范围内未收到任何值,我想根据事件结束观察。
// 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
事件。
如果客户端代码不必在最后一个值生成的时间内保持此状态,我该如何做到这一点?
答案 0 :(得分:2)
试试这个:
var query = observable.Timeout(TimeSpan.FromSeconds(2.0), Observable.Empty<int>());
只需将int
替换为您的源可观察对象的任何类型。