我正在寻找实现循环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));
有更好的方法吗?使用主题感觉很脏,而且通常不够优雅。
答案 0 :(得分:3)
该行
Bar(fizzes, buzzes).Subscribe(f => fizzes.OnNext(f));
可以更简单并更改为
Bar(fizzes, buzzes).Subscribe(fizzes);
由于Subscribe
方法采用IObserver
,因此通常使用的lambda方法只是此方法的快捷方式。
因此,fizzes
被用作IObserver
和IObservable
,这是Subject
的定义。如果这是您想要的行为,那么Subject
可能是最佳选择。