你如何利用反应式扩展扇出可观察量

时间:2012-02-01 09:31:33

标签: c# system.reactive

我有一项服务,我想转变为rx observable

该服务的界面为

    IEnumerable<Price> FetchUpdatedPrices()
    {
       //do work to return changed data since last update
    }

我的想法是使用rx允许消费者订阅更新。实现将每隔x秒轮询服务并调用观察者。

我想出了以下

    public IDisposable Subscribe(IObserver<IEnumerable<Price>> observer)
    {

        IObservable<IEnumerable<Price>> updatedPrices = Observable.Interval(new TimeSpan(0, 0, 1))
            .Select(r => FetchUpdatedPrices());

        return updatedPrices.Subscribe(observer);
    }

问题是我希望观察者看到IObservable<Price>而不是IObservable<IEnumerable<Price>>

任何人都可以给这个Rx noob指点如何做到这一点吗?

1 个答案:

答案 0 :(得分:2)

SelectMany怎么样?

IObservable<IEnumerable<Price>> updatedPrices = Observable.Interval(new TimeSpan(0, 0, 1))
    .SelectMany(r => FetchUpdatedPrices());