在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
请注意,第一个元素会立即被观察到。
我想知道是否有更简洁的方法来实现这一目标。