我想通过在特定时间间隔内从一个元素移动到另一个元素来迭代一个集合。因此,例如,此方法可以正常工作:
var a = new List<int> { 1, 2, 3, 4}.ToObservable();
var b = Observable.Interval(TimeSpan.FromSeconds(1));
var c = a.Zip(b, (l, r) => l);
c.Subscribe(x => Debug.WriteLine(x));
但是我想使用列表中每个元素的值作为间隔,所以我使用了这段代码:
var a = new List<int> { 1, 2, 3, 4}.ToObservable();
var b = a.Delay(x => Observable.Timer(TimeSpan.FromSeconds(x)));
b.Subscribe(x => Debug.WriteLine(x));
正如这里所说的http://blogs.msdn.com/b/rxteam/archive/2012/03/12/reactive-extensions-v2-0-beta-available-now.aspx “延迟的新重载允许一个指定(可选)订阅的延迟以及基于选择器函数的每个元素的延迟”。但是运行代码并不像预期的那样工作。它只是以 1 秒的间隔吐出列表中的元素。像这样:
...(1 秒)1 ...(1 秒)2 ...(1 秒)3 ...(1 秒)4
代替
...(1 秒)1 ...(2 秒)2 ...(3 秒)3 ...(4 秒)4
我错过了什么吗?