Reactive .NET中的循环IObservable链

时间:2014-05-01 12:04:31

标签: c# .net system.reactive reactive-programming dataflow

我正在寻找实现循环IObservable链的最佳方法。

例如:

IObservable<B> Foo(IObservable<A> fizz)
{
    //stuff
}

IObservable<A> Bar(IObservable<A> fizz, IObservable<B> buzz)
{
    //stuff
}

我的实施:

var fizzes = new BehaviorSubject<A>();
var buzzes = Foo(fizzes);
Bar(fizzes, buzzes).Subscribe(f => fizzes.OnNext(f));

有更好的方法吗?使用主题感觉很脏,而且通常不够优雅。

1 个答案:

答案 0 :(得分:3)

该行

Bar(fizzes, buzzes).Subscribe(f => fizzes.OnNext(f));

可以更简单并更改为

Bar(fizzes, buzzes).Subscribe(fizzes);

由于Subscribe方法采用IObserver,因此通常使用的lambda方法只是此方法的快捷方式。

因此,fizzes被用作IObserverIObservable,这是Subject的定义。如果这是您想要的行为,那么Subject可能是最佳选择。