javascript - Javascript:在选项卡处于非活动状态时 setInterval 暂停和跳过
问题描述
如果 setInterval 的时间间隔是 10 毫秒,那么如果选项卡处于非活动状态则它会暂停,但如果设置为 1 秒,那么它不会暂停并在选项卡处于非活动状态时继续计数。这里有些例子:
1秒 -
num = 0;
window.setInterval(function() {
num = num + 1;
document.getElementById('counter').innerHTML = num;
}, 1000);
<html>
<head>
</head>
<body>
<span id="counter">0</span>
</body>
10 毫秒 -
num = 0;
window.setInterval(function() {
num = num + 1;
document.getElementById('counter').innerHTML = num;
}, 10);
<html>
<head>
</head>
<body>
<span id="counter">0</span>
</body>
在计算第二个数字时,它似乎跳过了 80 个数字。为什么是这样?这发生在片段中,如果您是自己制作的,即作为您计算机上的文件。
这与我的计算机的处理能力,或者它的内存,还是什么有关?我对此感到非常困惑,所以任何答案都将不胜感激。
所以,重申一下,我的问题是:
1) 为什么 setInterval 暂停?
2)为什么它在暂停然后重新开始时跳过了80个左右的数字?
3)为什么这只适用于较短的时间间隔?
解决方案
推荐阅读
- python - 使用 peewee 查询现有数据库 - MySQL Metastore
- asp.net - 我不能使用“this.props.form”
- php - ajax 插入在 codeigniter 中不起作用
- cassandra-3.0 - 墓碑影响 Cassandra 读取
- perl - DBD::mysql: mysql.so: 未定义符号:net_buffer_length
- ios - AVAudioSession 在某些蓝牙设备上不起作用
- java - 如何从 JAR 应用程序中动态加载类以在另一个 JAR 中使用?
- go - 恐慌:运行时错误:makelice:上限超出范围
- java - 对象的数据结构 - 为每个对象运行查询
- laravel - 用户类型限制 - 工作流