Mar*_*ski 5 javascript reactive-programming rxjs
我想有多个订阅来对一个可观察的事件做出反应,但我也想记录该事件,所以我通过一个do()操作员来记录它。
问题是,我创建的每个订阅都会记录一次事件!
我目前正在通过创建 aSubject并next从事件回调中调用它来解决这个问题,这允许我记录一次事件并触发多个订阅。
以下是一些演示该问题的代码:https : //stackblitz.com/edit/rxjs-xerurd
我有一种感觉,我错过了一些东西,难道没有更“RxJS”的方式来做到这一点吗?
编辑:
我不是在要求区分热和冷可观察量,实际上我使用的是热可观察量 - 由它创建fromEvent()并想知道为什么我可能的热事件源表现得像冷的一样。
我现在意识到 - 在阅读之后share()- 这pipe()会“改变”你可观察到的寒冷,即根据你的来源(可能是冷的,可能是热的)返回一个冷的
因为 Observable 序列默认是冷的,所以每个订阅都会有一组单独的站点效果。
如果您希望只执行一次副作用 - 您可以通过向多个订阅者广播单个订阅来共享订阅。要做到这一点,你可以使用share,shareReplay等等。
为了更好地理解它是如何工作的,什么是“冷”和发布,请参阅 RxJS v4 文档:
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |