BaconJS的Pub-Sub

时间:2018-10-13 13:40:46

标签: javascript publish-subscribe bacon.js

我可以使用BaconJS进行pubsub吗?当我尝试创建并订阅事件流时,第一个观察者将使用该流,而将来的观察者将无法重播该流的历史值。

1 个答案:

答案 0 :(得分:0)

Bacon.js有两种类型的Observable

  • EventStream
  • Property

EventStream的订阅者仅接收订阅期间发生的事件。 Property的订阅者在订阅时会收到发生的最后一个事件。

有多种方法可以在Bacon.js中创建Observables,其中一些方法可以创建EventStream,而另一些方法可以创建Property。您可以在需要时轻松地在两者之间进行转换。

全部记录为here

作为脚注,如果您在RxJS中尝试相同的操作,则会发现您没有相同的问题。但不要上当。您可观察到的RxJS不会挂在最近的事件上,而是将其提供给下一个订阅者。相反,它正在为每个订户重新创建其基础资源。这可能很危险。假设您有一个观察到的命中端点。该可观察对象的每个订阅者都将使其到达该端点。仅在调用subscribe时才发生订阅。当您使用pipe从另一个观察对象创建一个可观察对象时,也会发生这种情况,因此,如果您希望将FRP代码分解为一小块以提高可读性,那么RxJS的冷可观察对象就会遇到这个问题。 (RxJS拥有shareReplay之类的功能来使可观测对象变热,但要在99%的时间内完成您可能想要的操作,这是额外的工作。)