IE可枚举到可观察间隔

本文关键字:观察 枚举 IE | 更新日期: 2023-09-27 18:33:40

为了每 5 秒生成一个"度量",我正在做这样的事情:

var Events = Observable.
    Interval(TimeSpan.FromSeconds(5)).
    Select(i => factory.GenerateRandomMeasure())

我想做同样的事情,但基于现有的度量集合。我假设我必须做这样的事情:

var Events = existingList.ToObservable();

但是,是否可以添加一个间隔概念来获取具有间隔的每个列表项?(例如,每 5 秒一个项目)

IE可枚举到可观察间隔

您可以执行以下任一操作:

(1)

var Events =
    Observable
        .Interval(TimeSpan.FromSeconds(5))
        .Zip(existingList, (i, x) => x)
        .Select(i => factory.GenerateRandomMeasure());

(二)

var Events2 =
    Observable
        .Generate(
            0,
            x => x < existingList.Count,
            x => x + 1,
            x => existingList[x],
            x => TimeSpan.FromSeconds(5))
        .Select(i => factory.GenerateRandomMeasure());          

第一个可能更明智,更容易写。如果您还不知道第二个非常值得学习,因为它非常强大.Generate可以在很多地方使用。