IEnumerable 到具有间隔的 Observable

IEnumerable To Observable with interval

为了每 5 秒生成一个 "measure",我正在做类似的事情:

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 非常强大,可以用在很多地方。