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中实现这一目标?
使用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节流事件流?处理这个问题并已解决.