我正试图驯服一个键盘触发的事件,没有节流会以非常高的频率发射。下面的代码可以工作,但它也会延迟第一次调用GlobalCopy的时间限制。有没有办法毫不拖延地获得第一个样本?
observableGlobalCopy = Observable
.FromEventPattern<EventHandler, EventArgs>(h => this.GlobalCopy += h, h => this.GlobalCopy -= h);
observableGlobalCopy
.SubscribeOnDispatcher()
.Throttle(GlobalEventThottle)
.Subscribe(x => GlobalCopyHandler());
答案 0 :(得分:5)
您可以尝试这样的事情:
var observableGlobalCopy2 = observableGlobalCopy
.Window(() => Observable.Timer(TimeSpan.FromSeconds(1.0)))
.Select(_ => _.Take(1))
.Merge();
答案 1 :(得分:0)
如果我理解你的要求,那怎么样?
observableGlobalCopy.Take(1)
.Concat(
observableGlobalCopy.Throttle(GlobalEventThottle))
.SubscribeOnDispatcher()
.Subscribe(x => GlobalCopyHandler());