当计算机进入睡眠状态时 setTimeout 会发生什么?

2024-01-06

在现代网络浏览器中,假设我做了一个setTimeout10分钟(12:00),5分钟后让计算机进入睡眠状态,当系统再次唤醒时会发生什么?如果它在 10 分钟之前(12:09)或更晚(16:00)醒来会发生什么?

我问的原因是因为我希望每 10 分钟请求一次新的身份验证令牌,并且我不确定浏览器是否会做正确的事情并在长时间后唤醒时立即请求新令牌时间。

澄清:我不想使用 cookie - 我正在尝试在这里构建一个网络服务;是的,服务器将拒绝旧的和无效的令牌。


据我测试,它只是在计算机唤醒后停止并恢复。当计算机唤醒时,setInterval/setTimeout 不知道任何时间已经过去。

我认为你不应该依赖的准确性setTimeout/Interval对于时间紧迫的事情。对于谷歌浏览器我最近发现的 https://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs如果激活的选项卡失去焦点,任何超时/间隔(短于 1 秒)都会减慢为每秒一次。

除此之外,超时/间隔的准确性取决于运行的其他函数等。简而言之:它不是很准确。

因此,使用间隔和超时,根据其启动的函数内的开始时间检查时间会给您带来更好的准确性。现在,如果您在 12:00 开始,计算机将进入睡眠状态,并在 16:13 左右醒来,检查 16:13 与 12:00 您确定必须更新令牌。可以找到使用时间比较的例子here http://jsfiddle.net/KooiInc/610c69j6/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当计算机进入睡眠状态时 setTimeout 会发生什么? 的相关文章