在angularjs中的后台服务器上定期调用函数

时间:2015-10-08 06:22:34

标签: angularjs api xmlhttprequest intervals

我在q服务器上有一个如下所示的API:

function isLoggedIn(){
   ....
    }

此API告知用户是否已登录。

我想每隔15分钟或在任何时间间隔内调用此API,以检查用户是否在我的角度应用上进行了身份验证。

我关心的是如何间隔调用API,以及在何处编写此方法。

2 个答案:

答案 0 :(得分:7)

在主控制器中使用setInterval。

setInterval(function(){ 
    // call your service method here
    //isLoggedIn(); in your case
 }, 3000); // This is time period in milliseconds 1000 ms = 1 second.

使用$ interval服务注入你的控制器功能,你可以用它来安排重复的函数调用。下面是一个使用$ interval服务每5秒调度一次函数调用的示例:

var myapp = angular.module("myapp", []);

myapp.controller("MyController", function($scope, $interval){

    $interval(isLoggedIn, 5000);

});

function isLoggedIn() {
    console.log("Interval occurred");
    // call your service method here
}

答案 1 :(得分:2)

这是我使用的代码。

app.run( 
function ( $interval, AuthService, $state, $rootScope, $http, $location, $stateParams ) {
$interval( function( event, toState, toParams, fromState, fromParams ){
    AuthService.keepAlive( $rootScope, $http ).then( function( data ){
        if( data.Result == "false" ){
            AuthService.logout( $http, $rootScope ).then( function( data ){
                $rootScope.returnToState = $location.url();
                //$rootScope.returnToStateParams = toParams.Id;     
                $state.transitionTo("login.signin");
                //event.preventDefault(); 
            });
        }
    });
}, 1000 * 60 );

});

它的工作。我可以ping服务器分钟。我得到了正确的回应。 我将从event.preventDefault中删除注释的小问题我没有定义事件。

如果可能,请告诉我。