两个AngularJS $超时计时器发生冲突?

时间:2016-12-20 10:40:04

标签: angularjs twilio

我正在使用Twilio设置电话对话。移动应用程序向websocket请求诸如对话开始的时间之类的信息。使用$ timeout每秒进行一次询问。当呼叫连接时,第一个计时器停止。第二个开始计算通话的持续时间。当呼叫断开时,持续时间计时器停止,并且向websocket请求信息的计时器再次开始。这就是问题所在。当调用$ timeout来询问websocket时,持续时间也会继续。看起来这两个人正在发生冲突。我是AngularJS的新手,我对$ apply和$ timeout等的了解有限。

持续时间的$ timeout位于控制器中。另一个位于服务中。

我试图将$ timeout.cancel()函数放在$ apply中,但这似乎不起作用。

控制器中的

$ timeout:

 var updateCounter = function() {
        $scope.time++;
        timer = $timeout(updateCounter, 1000);
}

    Twilio.Device.disconnect(function(conn) {

        $timeout(function() {
          $scope.$apply(function() {
            $timeout.cancel(timer);
            LimServ.askTimeStamp($scope.username); //above $timeout cancel works when this line is removed.
          });
        })
    }

$ timeout in service:

  var getLimitTimestamp = function() {
    WebFac.send(userName);
    timerLim = $timeout(getLimitTimestamp, 1000);
  }

  this.askTimeStamp = function(username) {
    userName = username;
    getLimitTimestamp();
  }

使用$timeout.cancel(timerLim);

取消timerLim

如果需要更多信息,请告诉我们!

0 个答案:

没有答案