如果我使用subject或Observable,只将消息传递给兄弟组件?

时间:2018-05-17 10:14:45

标签: angular observable angular5 subject

 const simpleObservable  = new Observable( (observer) => {
     observer.next("My message");
     observer.complete();
 })

在兄弟组件中订阅

 simpleObservable.subscribe();

对于主题,

const subject = new Rx.Subject();

subject.next("My message");

subject.subscribe((data) => {
      console.log(data);
})

我知道使用subject的主要原因是多播和observable是单播的(每个订阅的观察者拥有可观察的独立执行)。

那么只是传递消息,哪个更有效,更好用?

1 个答案:

答案 0 :(得分:1)

这实际上取决于你想用它做什么。 我建议选择单播,因为在多播操作中 observable只执行一次 ,而不是基于每个订阅。 如果基础观察者完成,中间人主题也会完成 ,因此将来添加的任何 订阅者都不会收到任何数据 或只是

  

一旦主题完成,该主题的未来订阅者将不会   收到更多数据

还要注意

    • 根据定义,可观察的是数据生成者,可以随时间生成数据的特殊类型。
    • 另一方面,主题可以充当数据生产者和数据消费者。