间隔函数在我单击的最后一个元素中不断循环。我想要发生的是在我单击一个新元素时取消最后一个间隔,并在我单击它时重新开始。我点击了 ng-repeat
中的每一项。
这是我的代码。
$scope.onClickTab= function(x,tkid, sid, $event){
var vtpostdata = 'TokenId=' + tkid +
',SessionId=' + sid +
',ChatMessageCount=' + 0 +
',retrytimes=' + 10 +
',delayms=' + 100;
$interval(function() {
$http.jsonp(ServiceDomainSite + 'myApi' + vtpostdata + '?callback=JSON_CALLBACK&t='
+ new Date().getTime())
.success(function (data) {
var resultObject = angular.fromJson(data.Rows);
$scope.Chats = resultObject;
});
}, 1000);
};
最佳答案
$interval.cancel()
很好用。我还删除了 var vtpostdata
,因为在您再次请求 $http
之前,它不会在代码中使用。所以此时不需要创建var。另请查看 AngularJS $interval 的文档了解有关 $interval 处理的更多信息。
var myInterval = null;
$scope.onClickTab = function(x,tkid, sid, $event){
//cancel current interval
if (myInterval !== null) {
$interval.cancel(myInterval);
}
myInterval = $interval(function() {
$http.jsonp(ServiceDomainSite + 'myApiTokenId=' + tkid +
',SessionId=' + sid +
',ChatMessageCount=' + 0 +
',retrytimes=' + 10 +
',delayms=' + 100 + '?callback=JSON_CALLBACK&t='
+ new Date().getTime()).success(function (data) {
var resultObject = angular.fromJson(data.Rows);
$scope.Chats = resultObject;
});
}, 1000);
};
关于javascript - 使用 $interval 在 AngularJS 中每秒触发一个 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42558513/