使用system.reactive立即开始每个间隔发出连续值的最简洁方法是什么?

时间:2019-01-22 16:01:28

标签: c# system.reactive

在Linqpad中考虑以下代码:

DateTime.Now.Dump();
Observable
    .Interval(TimeSpan.FromSeconds(3))
    //.Select(n => n + 1)
    //.StartWith(0)
    .Do(n => $"{DateTime.Now} {n}".Dump())
    .Wait();

它输出:

1/22/2019 12:23:57 PM
1/22/2019 12:24:00 PM 0
1/22/2019 12:24:03 PM 1

请注意,3秒钟后观察到第一个元素。我想我马上就可以订阅了。我的解决方案是:

DateTime.Now.Dump();
Observable
    .Interval(TimeSpan.FromSeconds(3))
    .Select(n => n + 1)
    .StartWith(0)
    .Do(n => $"{DateTime.Now} {n}".Dump())
    .Wait();

哪个会产生:

1/22/2019 12:26:10 PM
1/22/2019 12:26:10 PM 0
1/22/2019 12:26:13 PM 1
1/22/2019 12:26:16 PM 2

请注意,第一个元素会立即被观察到。

我想知道是否有更简洁的方法来实现这一目标。

0 个答案:

没有答案