RxJs:Subjects和Observable-Multicasting之间有什么区别

问题描述 投票:1回答:1

我已经学习了几个星期的RxJs,我似乎无法理解主题和多播之间的差异到底是什么。

我找到了很多可以将观察者与主体区分开来的来源,但我找不到任何可以区分具有多播 - 可观测量的主题的来源

据我了解......

多播:允许在多个订户之间共享副作用。

Subjects:是一个Observable,它在观察者之间共享一条执行路径。

我的问题是......

  • 如果两者都做同样的事情有什么区别?
  • 你什么时候应该使用主题?
  • 你什么时候应该使用多播?

谢谢..

rxjs reactive-programming
1个回答
1
投票

基本上“多播”意味着在多个观察者之间共享对一个源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个观察者。

© www.soinside.com 2019 - 2024. All rights reserved.