简体   繁体   English

IEnumerable至Observable的间隔

[英]IEnumerable To Observable with interval

To generate a "measure" every 5 sec I'm doing something like : 为了每5秒生成一个“度量”,我正在做类似的事情:

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

I would like to do the same but based on an existing Measure collection. 我想做同样的事情,但要基于现有的Measure集合。 I assume I have to do something like : 我认为我必须做类似的事情:

var Events = existingList.ToObservable();

But is It possible to do add an interval notion in order to get each list item with a interval? 但是,是否可以添加一个间隔概念以使每个列表项具有一个间隔? (one item every 5 sec for example) (例如,每5秒发送一项)

You can do either of these which work just fine: 您可以执行以下两种操作之一:

(1) (1)

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

(2) (2)

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

The first is probably more sensible and easier to write. 第一个可能更明智,更容易编写。 The second is very much worth learning if you don't know it already as .Generate is very powerful and can be used in a lot of places. 如果您还不了解第二种方法,那么它非常值得学习.Generate非常强大,可以在很多地方使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM