`
ruilin215
  • 浏览: 1143091 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

JavaScript时钟间隔的问题~

阅读更多

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时钟.rar

    在本主题中,我们将深入探讨“纯JavaScript时钟”这一经典特效,它展示了JavaScript如何实时更新页面上的时间显示,无需依赖任何外部库,如jQuery。 在纯JavaScript时钟中,我们首先需要理解JavaScript的时间处理...

    基于JavaScript的数字时钟

    在这个场景中,我们讨论的是一个用JavaScript实现的数字时钟,它旨在实时显示当前时间,并且针对不同的浏览器(如Internet Explorer和Firefox)进行了兼容性优化。 首先,让我们深入了解一下JavaScript数字时钟的...

    JavaScript时钟

    JavaScript时钟是一个基于JavaScript编程语言实现的实时时间显示功能,它可以动态更新页面上的时间,为用户提供当前日期和时间。在网页开发中,JavaScript时钟常用于创建动态用户体验,例如显示实时倒计时、日程提醒...

    js时钟特效

    JavaScript时钟特效是一种利用JavaScript编程语言创建的动态时钟展示方式,它可以为网站增添互动性和视觉吸引力。在这款"js时钟"项目中,开发者通过编写JavaScript代码模拟了传统指针式时钟的工作原理,使得网页上的...

    html+css+javascript实现抖音最火的罗盘时钟源码,时钟数字罗盘

    - **事件监听**:为了使时钟实时更新,JavaScript需要监听时间的改变,这通常通过`setInterval`函数实现,每隔一定间隔(如1秒)执行一次更新时间的函数。 - **日期和时间处理**:JavaScript的`Date`对象可以帮助...

    纯Js实现的精美液晶时钟

    【JavaScript与液晶时钟】 在Web开发中,JavaScript(简称JS)是一种不可或缺的脚本语言,主要用于客户端的交互和动态效果。"纯Js实现的精美液晶时钟"项目就是一个利用JavaScript的强大功能,来创建一个模拟液晶...

    一个简单的JavaScript时钟可以显示一天中的1440分钟

    接着,我们可以利用`setInterval()`函数,这是一个JavaScript的定时器,它可以按指定的间隔(以毫秒为单位)重复执行一个函数。在这个时钟中,我们可以设置一个定时器,每分钟更新一次时间显示,确保时间始终与系统...

    javascript动态时钟源代码.docx

    JavaScript动态时钟源代码概述 本资源提供了一个使用JavaScript编写的动态时钟源代码,用于实时显示当前时间和日期。该代码使用HTML、JavaScript和CSS技术实现动态时钟的功能。 JavaScript动态时钟源代码知识点 1...

    javascript经典特效---最简单的时钟.rar

    总结一下,这个JavaScript时钟教程涵盖了以下知识点: 1. JavaScript的`Date`对象及其方法,如`getHours()`, `getMinutes()`, 和 `getSeconds()`。 2. 使用`setInterval()`函数实现定时任务。 3. 字符串格式化,将...

    flash和javascript倒计时时钟

    3. 更新显示:每秒钟或指定间隔,JavaScript会更新倒计时显示,减去已过去的一秒钟。这个过程通常使用setInterval函数来定时执行。 4. 结束处理:当倒计时到达0时,JavaScript会触发一个事件,可以是显示一条消息,...

    【JavaScript源代码】javascript实现数字时钟效果.docx

    JavaScript 数字时钟是一种常见的网页动态效果,它利用 JavaScript 的日期对象(Date)和定时器(setInterval)来实时更新当前的时间。以下是对这个实例的详细解析: 首先,我们需要了解JavaScript中的Date对象。...

    relativity:Javascript 的间隔树时钟

    Javascript 的间隔树时钟 因为任何足够先进的 Web 应用程序都是分布式系统。 相关阅读: 建造 npm install broccoli build dist 测试 npm install broccoli serve open http://localhost:4200/tests 关于垃圾收集...

    javascript原生实现前端页面中的数码时钟效果例子

    数码时钟的基本思路是:每隔一定的时间间隔(如1秒)获取当前时间,然后转换为数码格式,最后更新到页面上。我们可以使用JavaScript的`Date`对象来获取当前时间,通过`getHours()`, `getMinutes()`, `getSeconds()`...

    JavaScript实时时钟代码(东)

    4. **性能优化**:考虑到频繁调用`setTimeout`可能会导致性能问题,可以通过增加更新间隔时间来缓解这一问题。 5. **跨浏览器兼容性**:确保代码能够在不同的浏览器环境下正常运行。 通过上述分析,我们可以看出这...

    基于WebHTML的js时钟作业

    在本项目中,我们探讨的是一个基于WebHTML的JavaScript时钟作业。这个时钟应用程序是用HTML5、CSS和JavaScript构建的,它实时显示计算机的当前时间,包括日期、星期以及具体的小时、分钟和秒数。这样的设计不仅有助...

    黑色翻页时钟HTML源码-倒计时单页翻页时钟HTML源码

    - **实时时间显示**:JavaScript负责动态更新时钟的显示,因为它可以实现实时交互。通过`setInterval()`函数,每秒或更短的时间间隔,代码会获取当前时间(`Date对象`),然后更新HTML元素中的时间显示。 - **秒表...

    电子时钟自增问题

    在多线程环境下,可以创建一个单独的线程或使用异步编程模型(如JavaScript的`setInterval`)来确保时钟的更新不会阻塞其他任务。 5. **用户界面**:如果是图形用户界面(GUI)应用,还需要掌握UI框架,如Tkinter...

    时钟和WEB时钟

    对于用户本地时间,JavaScript是常用来更新Web页面时间的工具,通过setInterval函数定期调用Date对象来刷新时间显示。 VBWebTimerAndClock这个文件名暗示了这是一个使用Visual Basic(VB.NET,与C#同属.NET框架)...

    javascript经典特效---Form中的时钟.rar

    &lt;title&gt;JavaScript时钟 #clock { font-size: 2em; text-align: center; } &lt;div id="clock"&gt;&lt;/div&gt; function updateClock() { var now = new Date(); var hours = now.getHours(); var ...

    javascript经典特效---固定的页面时钟.rar

    在网页中实现一个固定的页面时钟是JavaScript的基本应用之一,它可以让用户实时看到当前时间,提升用户体验。这个“javascript经典特效---固定的页面时钟.rar”文件包含了创建这样一个时钟的代码和资源。 首先,...

Global site tag (gtag.js) - Google Analytics