【问题标题】:RxJs: What is the difference between Subjects and Observable-MulticastingRxJs:Subjects 和 Observable-Multicasting 有什么区别
【发布时间】:2019-02-28 06:45:16
【问题描述】:

我已经学习 RxJs 几个星期了,我似乎无法理解 Subjects 和 Multicasting an observable 之间到底有什么区别。

我发现了许多将 observables 与 subject 区分开来的资源,但我找不到任何能将 Subjects 与 Multicasting-Observables 区分开来的资源

据我了解...

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

Subjects:是一个 Observable,它在 观察者。

我的问题是:

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

【问题讨论】:

    标签: rxjs reactive-programming


    【解决方案1】:

    基本上,“多播”是指在多个观察者之间共享一个订阅源Observable。在 RxJS 中,这总是通过内部使用 Subject 实例的 multicast() 运算符来完成。

    Subjects 是同时作为Observable 和观察者工作的对象。因此,通常您会使用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 个观察者。

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 2016-12-03
      • 2019-12-11
      • 2017-07-13
      • 2014-09-18
      • 2018-05-12
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多