我正在使用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);
如果需要更多信息,请告诉我们!