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();
}
}