Javascript RXJS中的可观测通道,具有角度?

Javascript RXJS中的可观测通道,具有角度?,javascript,angular,rxjs,rxjs5,Javascript,Angular,Rxjs,Rxjs5,我已经知道,为了实现组件(或其他部分)之间的通信,我可以创建一个集中式可注入服务: 这些通道仅仅是通过以下方式绕过元件的字符串: <node subscribeChannel="foo" publishChannel="bar"> </node> <node subscribeChannel="bar" publishChannel="foo"> </node> 问题: 我从这个基础设施中获得了什么(如果有的话) 我可以认

我已经知道,为了实现组件(或其他部分)之间的通信,我可以创建一个集中式可注入服务:

这些通道仅仅是通过以下方式绕过元件的字符串:

  <node subscribeChannel="foo"   publishChannel="bar">
  </node>
  <node subscribeChannel="bar"   publishChannel="foo">
  </node>
问题:

我从这个基础设施中获得了什么(如果有的话)

我可以认为它允许我订阅
水果主题
(不能处理
家具
)中的特定
香蕉频道

但当我思考这个问题时,所有水果的订户都会提到这个问题

这种结构有什么好处,在什么情况下对我有帮助

(我希望看到一个例子,如果不使用它,会做坏事)


我使用Rxjs创建一个事件发射器系统,假设您不想使用
逻辑通道
,每个要发布的事件都需要为其创建一个
服务
。现在,使用事件系统或
频道
可以创建一个,并在不同的场景中使用。这是我的事件发射器类似的东西。我使用Rxjs创建一个事件发射器系统,假设你不想使用
逻辑通道
,每个你想发布的事件,你都需要为它创建一个
服务
。现在,使用事件系统或
频道
可以创建一个,并在不同的场景中使用。这是我的事件发射器。
@Injectable()
export class PubSubService {
  private publishSubscribeSubject_:Subject<any> = new Subject();
  emitter_:Observable<any>;

  constructor() {
    this.emitter_ = this.publishSubscribeSubject_.asObservable();
  }

  publish(channel:string, event:any):void {
    this.publishSubscribeSubject_.next({
      channel: channel,
      event: event
    });
  }

  subscribe(channel:string, handler:((value:any) => void)):Subscriber {
    return this.emitter_
      .filter(emission => emission.channel === channel)
      .map(emission => emission.event)
      .subscribe(handler);
  }
}
  <node subscribeChannel="foo"   publishChannel="bar">
  </node>
  <node subscribeChannel="bar"   publishChannel="foo">
  </node>
export class NodeComponent implements OnDestroy {
  @Input() publishChannel:string;
  @Input() subscribeChannel:string;
  count:number = 0;
  private pubSubServiceSubscription_:Subscription;


  constructor(private pubSubService_:PubSubService) {}

  send() {
    this.pubSubService_
      .publish(this.publishChannel, {});
  }

  ngAfterViewInit() {
    this.pubSubService_
      .subscribe(this.subscribeChannel, 
                 event => ++this.count);
  }

  ngOnDestroy() {
    this.pubSubServiceSubscription_.unsubscribe();
  }

}