【问题标题】:IEnumerable To Observable with intervalIEnumerable 到 Observable 间隔
【发布时间】:2016-02-07 09:05:43
【问题描述】:

为了每 5 秒生成一个“度量”,我正在做类似的事情:

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

我想做同样的事情,但基于现有的 Measure 集合。 我想我必须做类似的事情:

var Events = existingList.ToObservable();

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

【问题讨论】:

    标签: c# system.reactive


    【解决方案1】:

    你可以做任何一个都很好的工作:

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

    【讨论】:

    • 我选择第二种方案!这十分完美。也许不清楚,但在这种情况下我不再使用工厂。我的用法来自工厂,随机测量或来自现有列表。但两者都有一个间隔。
    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2016-09-24
    • 2018-04-08
    相关资源
    最近更新 更多