JavaScript中setTimeout()和setInterval()用于创建和管理时钟.但这个时钟的精度是多少,却没有什么资料来提及.在讨论具体的问题前,先说明一下setTimeout与setInterval在时钟间隔为0值的情况下的反应.
当用户置setTimeout(proc, 0)时,将让出CPU直到下一个时钟间隔再开始执行proc,而并非"在0ms后执行proc";
当用户置setInterval(proc, 0)时,时钟不会被初始化. JavaScript要求至少以1ms为间隔创建时钟.
接下来,当interval值为1(或者其它很小的值)时,时钟将按一种"最小的"时间间隔来触发时钟,这个间隔,与setTimeout(proc, 0)时的间隔是同一值.
下面的代码用于检测该值:
<script>
dates = new Array(100000);
count = 0;
tid = setInterval(function () { dates[count++] = new Date() }, 1);
// 点击IE文档区显示结果
document.onclick = function() {
clearInterval(tid);
var str = '';
for (var i=1; i<count; i++) {
str += 'sleeped: ' + (dates[i].valueOf() - dates[i-1].valueOf()) + 'ms<br>';
}
document.writeln(str);
}
</script>
这段代码在IE中输出的值为15~16ms. 考虑到脚本代码执行本身存在消耗,因此我认为这个间隔值是16ms. 但是在FireFox里,显示的值还"可能"会包括0ms. 这应当是因为在FireFox中,是使用Java引擎的内部时钟,而非操作系统的时钟.因而应与Java的时钟处理机制有关(甚至存在版本问题). 但即使在FireFox中,也不会出现2~14中的这些数值.这表明两个引擎在算法上是一致的:以16ms为间隔.
一些国其它的资料有提及到这个值,例如:
http://www.codingforums.com/archive/index.php?t-46607.html
这里面提到"Win9x and WinME have 55 ms as the smallest frequency that will not cause a lag. It's 10 ms in the WinNT/2k/XP/2k3 versions. I can't answer for what limits are in place in Mac OS 9, Mac OS X or Linux systems."这里说是10ms,显然是不确切的. 我认为会是0x10 ms的误笔.
在webkit官方的内部论坛上,也提及到10ms的minimum值.由于我并不使用webkit的引擎(safari for Mac),因此不能做更多的测试.
分享到:
相关推荐
javascript实现数字时钟效果 本文实例为大家分享了javascript实现数字时钟效果的具体代码,供大家参考,具体内容如下 1、通过date获取时间 2、通过间隔定时器setInterval动态获取时间 3、间隔定时器setInterval...
Javascript 的间隔树时钟 因为任何足够先进的 Web 应用程序都是分布式系统。 相关阅读: 建造 npm install broccoli build dist 测试 npm install broccoli serve open http://localhost:4200/tests 关于垃圾收集...
8.5.5 更改表格间隔背景色 219 第9章 JavaScript中的XML 223 9.1 XML语言 223 9.1.1 XML概述 223 9.1.2 XML文档结构 225 9.1.3 XML标记 226 9.1.4 XML文档元素 226 9.1.5 XML属性 229 9.1.6 XML命名空间 230 9.2 XML...
8.5.5 更改表格间隔背景色 第9章 JavaScript中的XML 9.1 XML语言 9.1.1 XML概述 9.1.2 XML文档结构 9.1.3 XML标记 9.1.4 XML文档元素 9.1.5 XML属性 9.1.6 XML命名空间 9.2 XMLDOM 9.2.1 通用...
利用javascript制作一个显示当前时间的时钟,设定时针、分针和秒针的旋转属性,serInterval:以相同的时间间隔执行某个操作。
图书目录 第一部分 概论 ... 16.2 超时设定和时间间隔 16.3 定时器使用--侦听与拦截 16.3.1 标准模式--监视器及其范例 16.3.2 使用定时器时应当注意的问题 16.4 一个例子--漂亮的Web...
实例121 返回两个日期之间的间隔小时 188 实例122 倒计时 190 实例123 访问时间限制 191 实例124 计步器 192 4.3 日期时间特效 194 实例125 分时问候 194 实例126 节日提示 195 实例127 倒影时钟 196 实例128 带阴影...
时钟间隔固定到系统时钟的精确间隔计时器如何使用 npm install clock-interval用法示例用当前时间更新元素 var clockInterval = require ( 'clock-interval' ) ;function pad ( num ) { return ( '0' + num ) . ...
间隔树时钟来自: :
代码中使用了setTimeout函数,它可以在指定的时间间隔之后执行一个函数。在这个代码中,我们将setTimeout函数设置为1秒钟,以便每秒钟更新我们的倒计时时钟。 同时,代码中定义了一个名为showRemaining的函数,它...
时间 输出时间的命令行实用程序: $ cli-time -i Thu Apr 30 2015 11:45:50 ...我们使用这个实用程序有一个滴答作响的时钟,我们将它输入到。 但是,它可以以多种方式使用。 安装 npm install -g cli
由于JavaScript具有单线程异步特性,因此每次执行都需要占用一部分CPU时间,并且它们等待的时间会因负载而异。 这会在异步计时器中造成延迟和累积差异。 逐渐增加了不准确度。 TaskTimer声称是最好的计时器,可以...
如果您的计算机运行的是资源密集型应用程序,则CSS可能会落后,因此我决定将刷新间隔设置为30分钟。 用法 在小部件目录中编辑places.json文件,您将需要显示的时钟的纬度( lat ),经度( lng )和时区( timezone...
该应用程序允许用户输入工作和休息时间间隔,包括使用中下一个周期的动态更改(如果时钟正在运行并且用户更改了参数,则该应用程序将在进行下一轮调整)。 所有周期变化都会通过声音警报进行通知。 该应用在四个...
React本机时钟间隔 React类似于iOS12上床时间选择器的本机时间间隔控件 React性的 <0.60 1。?。? 0.60+ 2。?。? 安装 yarn add react-native-clock-interval @react-native-community/art 用法 import ...
MockTheClock(MTC)是一个JavaScript库,用于在浏览器中进行时间欺骗。 (是的,这是针对浏览器的,而不是针对Node的,在Node中有一种更好的方法可以执行此操作) 虽然像这样的库曾经存在,但它们不支持...
降价预览器该项目是通过引导的。 基于freeCodeCamp的和构建。 在上观看直播用户可以自定义会话和休息的时间长度。 计时器可以随时暂停。 短暂的警报声指示每个间隔的结束。 有一个选项可以重置并从头开始间隔。
这是一个学习项目,用于试验 DOM 元素、JS 动画和样式转换,以及了解 JS 超时和间隔。 原始项目文件早已丢失,但小部件的代码仍然可用。 此外,小部件仍然可以安装到仪表板并按预期运行,小部件背面只有轻微的样式...
时钟_Amoseta的_js_objects 此项目仅出于教育目的。 拉请求是欢迎的,但是优先权是我自己开始! 谢谢你的合作! 网站发布在项目特色: javascript基础:设置间隔s 阿莫塞塔