我已经学习RxJs几周了,但我似乎无法理解Subject和多播observable之间的区别。
我找到了许多区分observable和subject的来源,但我找不到任何区分subject和多播observable的来源。
据我理解...
多播:允许将副作用在多个订阅者之间共享。
Subjects:是一个Observable,它在观察者之间共享单个执行路径。
我的问题是:
- 如果两者都执行相同的操作,有什么区别吗?
- 何时应该使用Subject?
- 何时应该使用多播?
我已经学习RxJs几周了,但我似乎无法理解Subject和多播observable之间的区别。
我找到了许多区分observable和subject的来源,但我找不到任何区分subject和多播observable的来源。
据我理解...
多播:允许将副作用在多个订阅者之间共享。
Subjects:是一个Observable,它在观察者之间共享单个执行路径。
我的问题是:
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 个观察者。