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:如何使用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

此函数只调用两次:console.log(数据);显示结果的2倍

如何每3000ms调用getPerformerOnline?

您需要一个而不是一个超时,还要避免在angulars中使用
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); });
}