setTimeout 对比睡眠模式

setTimeout Vs. sleep mode

根据我在几个 SO 答案中的理解,如果计算机在调用 setTimeout 后进入睡眠模式,则应忽略睡眠时间。

例如:

但是,我的测试显示了以下行为:

我的理解是,当计算机唤醒时,如果在休眠期间触发了超时,则立即触发,否则在t0+[超时值]时触发。

那么预期的行为是什么? 它在所有浏览器和 OS 中都一样吗?

我的一项测试(在 Windows 10 上使用最新版本的 Chrome):https://codepen.io/robloche/pen/GRJvEJB

总结以上评论:

  • 我描述的行为似乎对每个人都有意义。
  • 我仍然不确定是否符合规范或所有浏览器都以这种方式实现它。

我最初的问题是更新身份验证令牌,我最终得到了一个不使用 setTimeout 的解决方案(感谢 ):

  • 当我获得令牌时,我计算并存储下一个续订日期
  • 我使用 setInterval 定期检查下一个续订日期是否已过。

这样,计算机在下一个续订日期前 1 秒或 36 小时后唤醒都没有关系。