当笔记本电脑盖子关闭时,settimeout计时器停止



当我的系统进入休眠模式时,javascript计时器停止倒计时,当它返回时,它继续倒计时。

但我的问题是,我希望倒计时继续当我的系统进入休眠模式。是否有任何解决方案/变通方法来实现这一目标?

这不是javascript的问题。

当你合上盖子时,你的笔记本电脑处于休眠状态,这意味着CPU处于关闭状态,无法进行计算。

你有三个选择

1)合上盖子让笔记本电脑一直开着,或者不合上盖子

2)停止在客户端执行定时器任务,而只是在服务器端启动一个定时器。根据你想要实现的目标,这可能是相关的,也可能不是相关的,但这是知道用户是否会打开他们的盖子/打开浏览器/打开机器等的唯一方法。

3)重新编写代码,而不是使用计时器说"等待十秒",而是将其设置为使用绝对时间,就像下面这样(这是一个模糊的伪代码来演示我的意思,不是一个工作的解决方案)

var targetTime;
var running = false;
startTimer(timeInSeconds)
{
    targetTime = now() + timeInSeconds;
    running = true;
}
while(running)
{
    if(now() > targetTime)
    {
        doTimerThings();
        running = false;  
    }
}

这不会使定时器精确无误,但会在机器再次启动后尽快触发。你可以改变你的逻辑,以适应你希望如何处理这个(例如处理不同的事情,如果计时器被触发晚)

如果你需要在精确的间隔时间内触发计时器,这将无济于事。但当电脑关闭时,这是不可能的。

最新更新