Javascript angularJS:如何使用setTimeout? function performerController($scope,$http){ this.getPerformerOnline=函数(performerid){ setTimeout(this.getPerformerOnline,3000,performerid); $http.get(“ajax.php”{ 参数:{ “操作”:“getPerformerOnline”,“performerid”:performerid } }).成功(功能(数据){ 控制台日志(数据); $scope.performer=数据; }); }; 这是.getPerformerOnline(); }
此函数只调用两次:console.log(数据);显示结果的2倍 如何每3000ms调用getPerformerOnline?您需要一个而不是一个超时,还要避免在angulars中使用Javascript angularJS:如何使用setTimeout? function performerController($scope,$http){ this.getPerformerOnline=函数(performerid){ setTimeout(this.getPerformerOnline,3000,performerid); $http.get(“ajax.php”{ 参数:{ “操作”:“getPerformerOnline”,“performerid”:performerid } }).成功(功能(数据){ 控制台日志(数据); $scope.performer=数据; }); }; 这是.getPerformerOnline(); },javascript,angularjs,Javascript,Angularjs,此函数只调用两次:console.log(数据);显示结果的2倍 如何每3000ms调用getPerformerOnline?您需要一个而不是一个超时,还要避免在angulars中使用setTimeout,而是使用angulars服务 function performerController($scope, $http) { this.getPerformerOnline = function (performerid) { setTimeout(this.getPerf
setTimeout
,而是使用angulars服务
function performerController($scope, $http) {
this.getPerformerOnline = function (performerid) {
setTimeout(this.getPerformerOnline, 3000, performerid);
$http.get("ajax.php", {
params:{
"action":"getPerformerOnline", "performerid":performerid
}
}).success(function(data) {
console.log(data);
$scope.performer = data;
});
};
this.getPerformerOnline(<?=$user->id?>);
}
function performerController($scope、$http、$interval){
this.getPerformerOnline=函数(performerid){
$interval(this.getPerformerOnline,3000,performerid);
$http.get(“ajax.php”{
参数:{
“操作”:“getPerformerOnline”,“performerid”:performerid
}
}).成功(功能(数据){
控制台日志(数据);
$scope.performer=数据;
});
};
这是.getPerformerOnline();
}
不要在函数本身设置超时。而是定义函数,然后使用$interval
服务重复调用它
function performerController($scope, $http, $interval) {
this.getPerformerOnline = function (performerid) {
$interval(this.getPerformerOnline, 3000, performerid);
$http.get("ajax.php", {
params:{
"action":"getPerformerOnline", "performerid":performerid
}
}).success(function(data) {
console.log(data);
$scope.performer = data;
});
};
this.getPerformerOnline(<?=$user->id?>);
}
您可以使用$interval。
使用$interval服务的优点是,它在内部调用$digest cycle
function performerController($scope, $http, $interval) {
this.getPerformerOnline = function (performerid) {
$http.get("ajax.php", {
params:{
"action":"getPerformerOnline", "performerid":performerid
}
}).success(function(data) {
console.log(data);
$scope.performer = data;
});
};
$interval(this.getPerformerOnline, 3000, performerid);
}
希望这对您有所帮助。使用。设置一个间隔,而不是让函数每次调用时都设置一个超时。我可能错了,但每次运行getPerformerOnline函数时,它都会设置另一个间隔。侦听器的数量将每三秒增加一倍。
function MainController($scope, $interval) {
$scope.intervalFunction = function(){
//your code goes here
}
var intervalPromise = $interval(function () { $scope.intervalFunction() }, 5000);
//best practice destroying the $interval on scope destroy
$scope.$on('$destroy', function () { $interval.cancel(intervalPromise); });
}