rx(rxjs)是否来自事件操作符多播?

rx(rxjs)是否来自事件操作符多播?,rxjs,Rxjs,热/冷/多播可能令人困惑。我想我现在正在想办法,但我想确认我是否正确理解了 ,构造函数调用.publish().refCount()。这是否意味着我使用fromEvent设置的事件侦听器(例如fromEvent(文档,'click'))将仅在有订阅者的情况下添加到文档中,并且在删除所有订阅者后,事件侦听器也将被删除?我关心性能,希望将单个源流多播到所有订阅者。我相信我理解正确,但如果我不明白,我希望得到一些澄清。似乎这应该是默认情况 谢谢 这是一个有趣的问题,我从没想过要测试 说到测试,RxJS

热/冷/多播可能令人困惑。我想我现在正在想办法,但我想确认我是否正确理解了

,构造函数调用
.publish().refCount()
。这是否意味着我使用
fromEvent
设置的事件侦听器(例如
fromEvent(文档,'click')
)将仅在有订阅者的情况下添加到文档中,并且在删除所有订阅者后,事件侦听器也将被删除?我关心性能,希望将单个源流多播到所有订阅者。我相信我理解正确,但如果我不明白,我希望得到一些澄清。似乎这应该是默认情况


谢谢

这是一个有趣的问题,我从没想过要测试

说到测试,RxJS的测试表明,侦听器仅在订阅时添加,在没有订阅时删除:

浏览器中的快速测试证实了这一点。在开发工具打开的情况下播放此代码段:

const subs=[]
常数面板$=可观察到的Rx
.fromEvent(document.getElementById('target'),'click')
函数add(){
subs.push(面板$.subscribe(()=>console.log('click'))
console.log('subscribe')
}
函数clearEm(){
subs.forEach(s=>s.unsubscribe())
console.log('unsubscribe')
}

目标


添加
清除
您实际使用的是RxJS 4吗?或者您正在使用RxJS 5?后者的来源实际上是肯定的,我通过一个测试得出了相同的结论,在该测试中,我将调用管道化到tap()。但这更准确。谢谢