【发布时间】:2019-05-28 18:32:22
【问题描述】:
我想在用户登录后开始计算当前会话。因为我将用户详细信息存储在 sessionStorage 中,所以我需要执行 location.reload 以便 API 请求能够访问 sessionStorage 中的令牌。问题是,一旦我重新加载,函数中的剩余代码就会被清除或忽略。我尝试了控制台日志记录,它显示大约半秒钟,然后控制台被清除。怎么会,我怎样才能继续触发我的 setTimeout 函数并使其持续存在?
loginUser: function(username, password) {
var loginDetails = {"username": username, "password": password};
return loginResource.save({}, loginDetails).$promise.then(function(response){
var user = {
name: username,
token: response.token,
}
sessionStorage.user = angular.toJson(user);
$window.location.reload();
})
.catch(function(reason) {
console.warn("Failed login", reason);
throw reason;
});
},
beginCountdown: function() {
console.log('begin');
setTimeout(function(){
sessionStorage.removeItem('user');
$window.location.reload();
}, 3000)
},
【问题讨论】:
-
如果您重新加载页面,那么这是正常行为......如果这适用于您,您可以稍后在脚本中移动重新加载
-
使用
sessionStorage时不需要重新加载页面,因为它是一个同步操作(据我所知-当然localStorage是)-您的代码可以引用存储的数据紧接着。
标签: javascript angularjs