说我要来产生随机数的异步流,其泵出新的价值每100毫秒。虽然试图拿出一个解决方案,我第一次尝试看起来是这样的:Observable.Defer - 需要一些澄清,正是它
var random = new Random();
Observable.Start(() => random.Next())
.Delay(TimeSpan.FromMilliseconds(100))
.Repeat()
.Subscribe(Console.WriteLine);
如果您尝试并运行此,你会发现,它只是不断一遍又一遍重复着同样的价值。好吧,我想我误解了重复如何工作。玩弄了一会儿后,我想出了这个和它的工作:
var random = new Random();
Observable.Defer(()=> Observable.Start(() => random.Next()))
.Delay(TimeSpan.FromMilliseconds(100))
.Repeat()
.Subscribe(Console.WriteLine);
所以我去MSDN文档来了解什么推迟其实就是做了,这是它说:
返回每当一个新的观察员赞同调用可观察到的工厂 可观察序列。
我想我的困惑是:我的代码示例中,我永远只能订阅可观测一次,那么为什么看似遍地调用Observable.Start(...)
?或者我误解Repeat()
?任何澄清将是非常棒的。