gpt4 book ai didi

javascript - knockout 设置超时延迟

转载 作者:行者123 更新时间:2023-12-03 09:26:19 25 4
gpt4 key购买 nike

当用户登录我的网站时,我会在我的服务器上为该用户存储一个“登录直到”参数,该参数在每次与服务器交互时都会更新。因此,如果他们在 X 秒内处于非事件状态,则应将其注销并刷新客户端页面以显示登录屏幕。一切都运行良好,除了该函数不断以 1 秒的间隔调用自身,而不是我正在寻找的 1700 秒以上的间隔。当每个调用都到达服务器时,我不希望它继续运行得比它需要的更频繁。

此函数包含在我的 knockout View 模型中。 logoutTimer 被声明为全局变量。查看控制台日志,我可以看到延迟显示了正确的时间,但它似乎大约每 1 秒运行一次。

self.autoLoginCheck = function() {
clearTimeout(logoutTimer);
//If not, refresh the main screen => that'll push them to the login screen automatically
myurl = "/api/checkLoginStatus.php";
var parameters = {
'userPublicID':self.userInfo().userPublicID
}
$.post(myurl, parameters, function(data) {
var getResponse = JSON.parse(data);
if (getResponse.loggedIn < 1 ) {
//This is the log out condition
location.reload(true);
} else {
//Check how many more seconds the current log in is good for, that's when we'll check it again
var msdelay = getResponse.nextCheck * 1000;
console.log("Delay is " + msdelay);
logoutTimer = setTimeout(self.autoLoginCheck(), msdelay);
}
});
}

我知道这种类型的问题已经被问过很多次了,但是阅读所有这些答案我不明白为什么这个函数每秒运行一次而不是等待 30 分钟。感谢那些向我展示显而易见的东西的人!

最佳答案

setTimeout 的第一个参数应该是一个函数,而不是函数的结果。

logoutTimer = setTimeout(self.autoLoginCheck, msdelay);

关于javascript - knockout 设置超时延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655619/

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