我已经学习了几个星期的RxJs,我似乎无法理解主题和多播之间的差异到底是什么。
我找到了很多可以将观察者与主体区分开来的来源,但我找不到任何可以区分具有多播 - 可观测量的主题的来源
据我了解......
多播:允许在多个订户之间共享副作用。
Subjects:是一个Observable,它在观察者之间共享一条执行路径。
我的问题是......
谢谢..
基本上“多播”意味着在多个观察者之间共享对一个源Observable的一个订阅。在RxJS中,这总是通过内部使用Subject实例的multicast()
运算符完成。
主题是同时作为Observable和observer同时工作的对象。所以通常你会使用Subjects随时发出自定义事件:
const s = new Subject();
s.next();
s.complete();
...但您可以使用它订阅另一个Observable,然后多次订阅此Subject,这与多播相同:
const s = new Subject();
const source = ... // Observable
source.subscribe(s);
s.subscribe(...);
s.subscribe(...);
s.subscribe(...);
所以只有一个订阅source
和3个订阅(观察员)到s
,因此你将source
的排放多播到3个观察者。