我希望有多个订阅以对可观察到的事件使用react,但是我也想记录该事件,因此我通过do()运算符将其通过管道进行记录。

问题是,我创建的每个订阅都会记录一次该事件!

我现在通过创建Subject并从事件回调中对其调用next来解决此问题,这使我可以记录一次事件并触发多个订阅。

这是一些演示此问题的代码:https://stackblitz.com/edit/rxjs-xerurd

我有一种想念的东西,不是有更多的“RxJS”方法吗?

编辑:

我并不是要问可观察到的可热事件与可观察到的事件之间的区别,事实上,我使用的是可观察到的热事件-由fromEvent()创建的可观察事件,并且想知道为什么我推测为热事件的源会表现得很冷。

我现在知道了-在阅读有关share()的内容之后-pipe()“转动”了您可观察到的感冒,即根据您的来源返回了一个感冒(可能很冷,可能很热)

最佳答案

由于可观察序列默认情况下是冷的,因此每个订阅将具有一组单独的站点效果。

如果您希望只执行一次副作用-您可以通过向多个订阅者广播单个订阅来共享订阅。为此,您可以使用shareshareReplay等。

为了更好地理解它是如何工作的,什么是“冷”并发布,请引用RxJS v4文档:

4.8 Use the publish operator to share side-effects

10-06 05:47
查看更多