【问题标题】:setTimeout reset for long durationssetTimeout 长时间重置
【发布时间】:2017-01-24 00:47:47
【问题描述】:

我有一个 setTimeout 函数,它在 25 分钟内开始并在接下来的 25 分钟内重置/重新启动。当我将测试脚本从 1500000 毫秒更改为更短的 1000 毫秒时,我的测试脚本显然可以工作;但是,当我(繁琐地)每 25 分钟(1500000 毫秒)对其进行测试时,情况并非如此。有什么建议吗?

//    1000ms = 1s
//    60000ms = 60s         // 1 min
//    1500000 = 1500s       // 25 mins

var timer = null;
timer = setTimeout(sessionFunction, 1500000);

function sessionFunction() {
    alert('test');
    clearTimeout(timer); 

    timer = setTimeout(sessionFunction, 1500000);
}
//    1000ms = 1s
//    60000ms = 60s         // 1 min
//    1500000 = 1500s       // 25 mins

var timer = null;
timer = setTimeout(sessionFunction, 1500000);

function sessionFunction() {
    alert('test');
    clearTimeout(timer); 
    
    timer = setTimeout(sessionFunction, 1500000);
}

【问题讨论】:

  • 附带说明,您可以使用setInterval 而不是手动清除和重置计时器
  • 浏览器标签运行时是否隐藏?
  • 是的,在某些情况下。这将用作会话超时警告对话框,以便用户可以在后台运行他们的选项卡/窗口。

标签: javascript jquery timer settimeout reset


【解决方案1】:

我建议更改脚本,使计时器每分钟触发一次,并在每次触发时保留一个计数器。一旦计数器达到 25,那么您就知道 25 分钟已经过去了。代码不会那么简单,但它确实避免了您遇到的计时器未触发的问题。

【讨论】:

  • 一个非常好的解决方法!谢谢!看起来这是我迄今为止唯一的选择,所以我会接受这个答案;但是,我很乐意看到其他人的其他选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多