如何创建一个IObservable <T>,每隔-n-秒返回一个值而不跳过任何值

Zer*_*nce 2 c# system.reactive

以下示例是我尝试这样做的:

var source
    = Observable.Sample(
          Observable.Range(1, int.MaxValue), TimeSpan.FromSeconds(2));
Run Code Online (Sandbox Code Playgroud)

但当我.subscribe()到Observable并将其输出到控制台时,它会显示一个这样的序列,每2秒输出一行:

OnNext: 312969
OnNext: 584486
OnNext: 862009
Run Code Online (Sandbox Code Playgroud)

显然.Range()observable正在运行,而.Sample()observable在每个输出之间等待2秒.我想知道如何创建一个observable但是不允许跳过值,所以显然看起来像这样:

OnNext: 1
OnNext: 2
OnNext: 3
Run Code Online (Sandbox Code Playgroud)

使用.Range()中的一个值每2秒输出一次.如何在.NET的Reactive Extensions中实现这一目标?

Ric*_*ein 5

使用Observable.GenerateWithTime:

var source = Observable.GenerateWithTime(1, _ => true, x => ++x, x => x, x => TimeSpan.FromSeconds(2));
Run Code Online (Sandbox Code Playgroud)

Observable.Range使用Observable.Generate,所以这是一种方法.还有很多其他方法.

对于一些更高级的,就像事件相同的方式处理(因为如果要生成自己的数据这显然只是帮助),请参阅如何使用RX节流事件流?处理这个问题并已解决.