我最近一直在从事超时函数(使用JavaScript -setInterval)。我确实对其进行了测试,除了一个小细节外,它完全按照我想要的方式工作。每当登录的用户睡觉时,会话仍处于活动状态,并且超时会不断计算时间。因此,在将PC醒来后,假设40分钟后,超时说例如-10分钟,用户仍将登录。如果他单击任何内容或刷新页面,服务将刷新,并且超时正在重新启动到初始值,那么什么也没有发生(用户仍然登录)。是否有一种方法可以确保用户在唤醒PC后将被记录下来?
预先感谢!
如果我了解您的问题,则解决方案可能是在超时的值为0时在Ajax中调用脚本,该脚本将记录用户,然后您可以刷新页面,JavaScript中的所有内容
而不是直接使用Settimeout/setInterval,也许尝试这样的事情:
var targetTime = moment(new Date()).add(5 ,'s');
var intervalHolder = {};
console.log("go")
intervalHolder.interval = setInterval(() => {
if (moment(new Date()).isAfter(targetTime)) {
console.log('TimedOut');
clearInterval(intervalHolder.interval);
}
},1000);
<script src="https://momentjs.com/downloads/moment.js"></script>