【发布时间】:2018-01-26 11:42:22
【问题描述】:
如果我编写了一个使用 setTimeout/setInterval 的 javascript 代码,如果相关页面未处于活动状态,Chrome 上的时间将无效。 为了演示,只需简单地创建一个带有 js 代码的 html 文件,如下所示:
<script>
var title = 1;
setInterval(function(){document.title = "X:"+title; title+=1}, 250);
</script>
多次打开页面,您会看到如果页面未处于活动状态,标题只会在大约 2 秒内增加,而不是 250 毫秒。这是我发展过程中非常关键的问题。 有谁知道如何避免它?如果有的话,一个简单的 Chrome 选项也足够了。
只是为了将其标记为不重复:它不是用于动画,而是用于后台工作。提供的示例非常准确!我需要非常准确地运行脚本并在后台选项卡中快速执行操作。我知道,99,9999% 的人不需要它...
【问题讨论】:
-
这到底是什么关键?你可能想看看How to create an accurate timer in javascript?
-
嗯,我在不同的地方需要它。主要原因:我需要在非活动页面上以毫秒精度运行 JS 代码。现在它错过了几秒钟!次要的,作为工作脚本应该运行得很快,比如 1 个操作/100 毫秒,但它只工作 1-2 秒/操作(如果工作页面不活动)
-
这正是您想要的,而不是它的原因。但我赞同 Derek:浏览器不是 RTOS。如果您需要进行准确的繁重工作,请在其他地方进行 - 无论是在服务器上,还是在客户端的本机应用程序中。
-
所以如果你是一个供应商,你会问每个人“你为什么需要这个?”。原因很简单:用于游戏控制。定时攻击,使机器人工作顺利。它适用于其他浏览器,但也适用于 Chrome。
-
是的,当然,我们需要了解人们的实际问题是什么。以前您只告诉我们you want a faster horse :-) 对于您的情况,如果您正在编写客户端机器人,我建议将时间敏感的东西放在服务器上(这样它们甚至可以在人们关闭标签时工作),因为您无法控制服务器查看副本
标签: javascript performance google-chrome settimeout setinterval