【问题标题】:How to dispose SignalR statechanged callback function如何处理 SignalR statechanged 回调函数
【发布时间】:2018-04-16 20:39:24
【问题描述】:

我正在尝试实现锁定未来,以防止在我的 Angular 5 Web 应用程序中对同一文档进行多次编辑。我在 Angular 服务中创建了集线器和连接,以便在多个组件中重用它。用户登录后,我将创建我的代理和连接,它们是服务中的存储。在 OnInit 内部的每个组件中,我都有一个在“connection.onStatChanged”上运行的代码来调用集线器的锁定命令。因为我将连接存储在服务中,所以在我离开一个组件后,该组件的事件侦听器仍在侦听连接的“onStateChanged”事件。我想清除每个组件的 ngOnDestory 中的回调函数。如果与服务器的连接丢失并且用户将页面更改为另一个页面,事件侦听器仍在运行,并且一旦再次建立连接,它就会尝试锁定该文档!

this.dataService.connection.stateChanged((change) => {
    if (change.newState === $.signalR.connectionState.connected) {
      this.registerSignalR();
      this.dataService.authProxy.invoke('lock', this.authNo, this.userService.userName, this.userService.userId);
    }
    this.connectionStateChange.next(change.newState);
  });

【问题讨论】:

    标签: angular callback connection signalr dispose


    【解决方案1】:

    我已经使用以下代码解决了这个问题,但我不确定这是不是最好的方法?

    ngOnDestroy() {    
       this.dataService.connection.stateChanged(null);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多