gpt4 book ai didi

javascript - AngularJS - 在 $routeChangeStart 中运行 setInterval()

转载 作者:行者123 更新时间:2023-12-03 05:22:31 27 4
gpt4 key购买 nike

我正在使用 setInterval() 来检查(每隔几秒)用户的 token 是否已过期。但是,因为我已将其包含在 $routeChangeStart 中,所以每次路线更改时都会运行该间隔。例如:如果我加载页面然后单击不同的路线,那么该间隔将再次运行,总共运行两个间隔。我在一开始就设置了clearInterval(),因为我认为它会停止任何当前间隔的运行。但是,这不会阻止间隔在每次路线更改时运行。除了在 $routeChangeStart 之外运行间隔之外,是否有办法在路线更改时停止间隔,然后重新启动它?

$rootScope.$on('$routeChangeStart', function() {
clearInterval(interval);

var interval = setInterval(function() {
var token = $window.localStorage.getItem('token');
self.parseJwt = function(token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace('-', '+').replace('_', '/');
return JSON.parse($window.atob(base64));
}
var expireTime = self.parseJwt(token);
var timeStamp = Math.floor(Date.now() / 1000);
var timeCheck = expireTime.exp - timeStamp;

if (timeCheck <= 0) {
console.log('time expired');
clearInterval(interval);
} else {
console.log('time not expired');
}
}, 2000);
});

最佳答案

$scope.on('$destroy', function () { $interval.cancel(intervalReturnValue);}); 销毁间隔在您开始间隔的 Controller 中

关于javascript - AngularJS - 在 $routeChangeStart 中运行 setInterval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317405/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com