我可以使用BaconJS进行pubsub吗?当我尝试创建并订阅事件流时,第一个观察者将使用该流,而将来的观察者将无法重播该流的历史值。
答案 0 :(得分:0)
Bacon.js有两种类型的Observable
:
EventStream
Property
EventStream
的订阅者仅接收订阅期间发生的事件。 Property
的订阅者在订阅时会收到发生的最后一个事件。
有多种方法可以在Bacon.js中创建Observables
,其中一些方法可以创建EventStream
,而另一些方法可以创建Property
。您可以在需要时轻松地在两者之间进行转换。
全部记录为here。
作为脚注,如果您在RxJS中尝试相同的操作,则会发现您没有相同的问题。但不要上当。您可观察到的RxJS不会挂在最近的事件上,而是将其提供给下一个订阅者。相反,它正在为每个订户重新创建其基础资源。这可能很危险。假设您有一个观察到的命中端点。该可观察对象的每个订阅者都将使其到达该端点。仅在调用subscribe
时才发生订阅。当您使用pipe
从另一个观察对象创建一个可观察对象时,也会发生这种情况,因此,如果您希望将FRP代码分解为一小块以提高可读性,那么RxJS的冷可观察对象就会遇到这个问题。 (RxJS拥有shareReplay
之类的功能来使可观测对象变热,但要在99%的时间内完成您可能想要的操作,这是额外的工作。)