也许我在这里推动了 Rx 的合理范围,但我想做的是轮询远程状态,但将轮询速度限制在合理的范围内。
我目前拥有的伪代码:
IObservable<data> RemoteObservable(Remote remote)
{
var onceonly = Observable.FromAsyncPattern(remote.Begin, remote.End);
return Observable.Defer(() => onceonly())
.ObserveOn(Scheduler.ThreadPool)
.Repeat();
}
我无法确定 usingThrottle
或Interval
in there 是否有帮助。在我看来,节流是关于限制传入事件,而不是限制重复率。
编辑:我问/回答了一个关于下面子问题的单独问题:如何使“延迟”的 observable 只订阅第一个订阅者?.
子问题:有没有办法允许对这种 Observable 进行两次订阅,而不会创建两倍的远程调用?我问是因为我想在 UI 中持续显示状态,但也在某些活动期间对其进行监控(这是我尝试使用 Observables 执行此操作的原因之一)。