我已经学习RxJ几周了,我似乎无法理解“主题”和“多播”之间的区别到底是什么。
我找到了许多将可观察到的事物与主题区分开来的资料,但是我找不到任何可以将多播与可观察的事物区分开来的资料
据我了解...
多播:允许在多个订户之间共享副作用。
主题:是一个Observable,在其中共享一条执行路径 观察者。
我的问题是...
谢谢..
答案 0 :(得分:1)
基本上,“多播”是指在多个观察者之间共享对一个可观察源的订阅。在RxJS中,这总是通过内部使用Subject实例的multicast()
运算符完成的。
Subject是同时充当Observable和Observer的对象。因此,通常情况下,您会在需要时使用主题发出自定义事件:
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
只有一个订阅,s
只有3个订阅(观察者),因此您正在将source
的发射多播到3个观察者中。