【发布时间】:2014-09-09 04:03:32
【问题描述】:
我使用Observable.FromEventPattern 创建了一个可观察对象。我们就叫它fromEvents吧。
我想创建另一个包装 fromEvents 的 observable。我们将其称为第二个可观察对象wrapper。
当wrapper 被订阅时,它应该:
- 发布来自
fromEvents的最新项目(如果有)。 - 发布来自
fromEvents的其余项目
显然wrapper 需要维持对fromEvents 的订阅,以便它始终可以访问最近的事件。
我尝试了Replay、Publish、PublishLast、Observable.Defer 的各种组合,但我从来没有完全得到我想要的结果。
我确信 Rx 有可以满足我需求的运营商,但我只是不确定如何将所有东西放在一起,因为我是新手。
【问题讨论】:
-
你试过Publish(initialValue) overload吗?其中哪一部分不符合您的需求?
-
这对我来说似乎是错误的。 goo.gl/M3g8CE 说,“发布使冷的可观察到热。”而且,“任何 .NET 事件都可以通过调用 FromEventPattern 变成一个热的 observable,而无需使用 Publish。”我已经有一个 hot observable。我知道那么多。我想我想要一个冷的可观察对象,它具有从底层可观察对象“产生”最新(缓存)值的副作用。此外,采用初始值的 PublishLast 需要初始值,如果底层的 observable 还没有产生任何东西,我可能还没有。
-
无论如何,Publish(initValue) 并没有按照我的描述进行。
-
Publish 在热的 observables 上也很有用。这种特殊的重载可以满足您的需求。我将发布一个示例。
标签: system.reactive reactive-programming