当Windows进入睡眠模式然后唤醒时,setTimeout无法工作

4
我在Chrome中注意到了这个问题。有人知道出了什么问题或者有什么解决方法吗?
2个回答

4
您可以使用setInterval代替-它会持续运行。如果您需要一次性解决方案,请使用clearInterval删除定时器。setInterval会立即触发,如果计算机在事件应该触发时处于休眠状态,则测试了Chrome、Firefox和Internet Explorer中的此行为。例如,请查看http://blaeul.de/de/content/javascript-timer-test及其源代码。

3

当Chrome进入后台时,它会冻结JavaScript执行。我在OS X中将其最小化到Dock时注意到了这一点。


据我所知,目前还没有解决方法。如果您告诉我们您想要做什么,可能会有其他可行的解决方案。


我试图通过ajax调用每10秒轮询服务器以获取新数据(数据库中的新更新)。我不知道Gmail是如何在Windows唤醒时仍然能够正常工作的。 - Dave
1
@Dave:首先,轮询是可怕的,应该是最后的选择。尝试使用WebSockets。此外,我猜测Google会放置某种检查代码来重新创建间隔。 - Josh K
4
@JoshK - 目前 Websocket 的支持还不够普及;而更通用的 Comet/长轮询方法也没有被所有的 Web 服务器很好地支持。 - jwl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接