为什么我只从这个Observable中获得一个项目?

时间:2014-06-26 02:53:26

标签: system.reactive reactive-programming

我有一个带有静态项目的冷观察,我需要在每个项目之间有一些时间延迟,我已将它与我通过Observable.Timer的另一个IObservable相结合。我正在使用Zip

var ob1 = Observable.Range(1, 100);
var ob2 = Observable.Timer(TimeSpan.FromSeconds(1.0));

var myObservable = Observable.Zip(ob1, ob2, (a, b) => b);

myObservable.Subscribe(a => Console.WriteLine("Item encountered"));

///Allow enough time for Timer observable to give back multiple ticks
Thread.Sleep(3000);

但输出只打印"物品遇到"一旦。我错过了什么?

2 个答案:

答案 0 :(得分:4)

为了确认评论,Observable.Interval只是一个参数的方法 - 因此它一直是!

答案 1 :(得分:2)

我找到了解决方案。 Observable.Timer为我的场景采用两个参数,第一个是第一个项目的到期时间,第二个到期时间用于所有后续项目。如果只提供了一个TimeSpan参数,那么它只会产生一个项目。

Observable.Timer(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0));