我正在使用 Observable 收听套接字并在我的一个组件中订阅它。如果我不取消订阅ngOnDestroy
,当我再次访问该组件时,它会触发 N 次(N 是我切换回该组件的次数),但如果我取消订阅,ngOnDestroy
它会在我第一次去时收听该组件,当我转到其他组件并返回时,它不会触发。
//in socket service
updateOrder() {
if (!this.socket.connected)
this.socket.connect();
let observable = new Observable < any > (observer => {
this.socket.on('test', (data) => {
observer.next(data); //going into here
});
return () => {
this.socket.disconnect();
};
})
return observable;
}
在监听组件的构造函数中
this.orderSubscriber = this.socketService.updateOrder().subscribe(data => {
console.log('socket fired', data);
})
ngOnDestroy() {
this.orderSubscriber.unsubscribe();
}