javascript - setTimeout 对比 sleep 模式

标签 javascript settimeout sleep-mode

根据我在几个 SO 答案中的理解,如果计算机在 setTimeout 之后进入休眠模式已被调用, sleep 周期应该被忽略。

例如:

  • t0:setTimeout(foo, 30000);
  • t0+20s:电脑进入休眠模式
  • t0+40s:计算机退出 sleep 模式
  • t0+50s:foo被称为

  • 但是,我的测试显示以下行为:
  • t0:setTimeout(foo, 30000);
  • t0+20s:电脑进入休眠模式
  • t0+40s:计算机退出 sleep 模式和foo被称为

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

    那么预期的行为是什么?
    所有浏览器和操作系统都一样吗?

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

    最佳答案

    总结一下上面的评论:

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


  • 我最初的问题是更新身份验证 token ,我最终得到了一个不使用 setTimeout 的解决方案(感谢 https://stackoverflow.com/a/6347336/603393 ):
  • 当我得到一个 token 时,我计算并存储下一个更新日期
  • 我用 setInterval定期检查下一次续订日期是否过去。

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

    关于javascript - setTimeout 对比 sleep 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60508262/

    相关文章:

    angular - 如何获取在其外部 "SetTimeout"内部生成的值

    当手机处于 sleep 模式时,iOS BLE 在后台扫描广告数据

    javascript - 延迟更改样式

    javascript - 你能将 AngularJS 与 Rails 模型一起使用吗

    jquery 在 mouseleave 上清除每个内部的 setTimeout

    Android sleep /待机模式

    c# - 我如何知道 Windows 何时进入/退出 sleep 或休眠模式?

    javascript - 在网页上有不可见的表单,并希望在使用 DojoToolkit 单击按钮时使它们可见,但不确定我的代码有什么问题

    javascript - 需要 firefox/IE designMode 引用

    d3.js - D3 : Delayed Display by setTimeout or setInterval