gpt4 book ai didi

javascript - 为什么在触发 window.location.reload 时清除其余功能代码?

转载 作者:行者123 更新时间:2023-11-30 14:00:47 24 4
gpt4 key购买 nike

我想在用户登录后开始计算当前 session 。因为我将用户详细信息存储在 sessionStorage 中,所以我需要执行 location.reload 以便 API 请求能够访问 sessionStorage 中的 token 。问题是,一旦我重新加载,函数中的剩余代码就会被清除或忽略。我尝试了控制台日志记录,它显示了大约半秒钟,然后控制台被清除。怎么会,我怎么可能继续触发我的 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)
},

最佳答案

Because I store user details in sessionStorage, I need to do a location.reload in order for API-requests to be able to access the token in sessionStorage.

That isn't true .

sessionStorage.setItem('key', 'value');
let data = sessionStorage.getItem('key');
console.log(data);

…显示第 1 行中存储的数据和第 2 行中检索的数据。

once I do the reload, the remaining code in the function is cleared, or neglected.

页面是您的 JavaScript 运行的环境。

重新加载页面等同于重新启动计算机并想知道为什么 Windows 应用程序不保持其状态。 可能用 JS 编写一个程序来保存它的状态并在再次打开时重新加载它,但你似乎没有这样做。

不要重新加载页面。解决真正的问题。 (这很可能是您在加载 JavaScript 程序时从 session 存储中读取数据,然后只将更新写入 session 存储,而不是您保存正在使用的数据副本的变量。)

关于javascript - 为什么在触发 window.location.reload 时清除其余功能代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339855/

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