为了每 5 秒生成一个“度量”,我正在做类似的事情:
var Events = Observable.
Interval(TimeSpan.FromSeconds(5)).
Select(i => factory.GenerateRandomMeasure())
我想做同样的事情,但基于现有的 Measure 集合。 我假设我必须做类似的事情:
var Events = existingList.ToObservable();
但是是否可以添加一个间隔概念来让每个列表项都有一个间隔? (例如每 5 秒一个项目)
最佳答案
您可以执行以下任一操作:
(1)
var Events =
Observable
.Interval(TimeSpan.FromSeconds(5))
.Zip(existingList, (i, x) => x)
.Select(i => factory.GenerateRandomMeasure());
(2)
var Events2 =
Observable
.Generate(
0,
x => x < existingList.Count,
x => x + 1,
x => existingList[x],
x => TimeSpan.FromSeconds(5))
.Select(i => factory.GenerateRandomMeasure());
第一个可能更明智,也更容易编写。第二个非常值得学习,如果您还不知道的话,因为 .Generate
非常强大,可以在很多地方使用。
关于c# - IEnumerable 到具有间隔的 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247499/