Reactive .NET 中的循环 IObservable 链

Posted

技术标签:

【中文标题】Reactive .NET 中的循环 IObservable 链【英文标题】:Cyclic IObservable Chain in Reactive .NET 【发布时间】:2014-06-17 21:47:13 【问题描述】:

我正在寻找实现循环 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));

有没有更好的方法来做到这一点?使用 Subject 感觉很脏,而且通常不够优雅。

【问题讨论】:

【参考方案1】:

线

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

可以更简单,改为

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

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

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

【讨论】:

以上是关于Reactive .NET 中的循环 IObservable 链的主要内容,如果未能解决你的问题,请参考以下文章

Reactive.NET - 从 .Subscribe 返回通用对象

使用 Reactive.NET RX 处理 Click 和 Double Click

.NET Reactive Framework 的良好介绍 [关闭]

如何使用 asp.net Web API 2(使用 TPL/Reactive)缓冲和批处理 REST 获取查询?

响应式系统reactive system初探

Spring 5 Reactive 中的 HTTP 响应异常处理