var i = 0;
var saveSource = Observable.Interval(TimeSpan.FromMilliseconds(200)).Select(x => i++);
var throttledClicks = saveSource
.Throttle(TimeSpan.FromMilliseconds(2000)) // Throttle for 2000 milliseconds
.Subscribe(x => Save()"));
如何执行第一个事件并忽略其他事件,直到前一个事件过去 2 秒后仅执行一次。如果超过2s就立即执行。
现实生活中的例子是调用 Save 方法,如果前一个方法执行时间超过 2 秒,则该方法应立即执行,并等到 2 秒过去才执行它(如果多个 Save 事件到达,则仅执行一次)。 Save 不接受任何参数,因此 x 并不重要。
任务可能是示例扩展方法?
var throttledClicks = saveSource
.Sample(TimeSpan.FromMilliseconds(2000)) // Sample every 2000 milliseconds if any
.Subscribe(x => Save()"));