我在q服务器上有一个如下所示的API:
function isLoggedIn(){
....
}
此API告知用户是否已登录。
我想每隔15分钟或在任何时间间隔内调用此API,以检查用户是否在我的角度应用上进行了身份验证。
我关心的是如何间隔调用API,以及在何处编写此方法。
答案 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中删除注释的小问题我没有定义事件。
如果可能,请告诉我。