【问题标题】:setInterval and setTimeout not matchingsetInterval 和 setTimeout 不匹配
【发布时间】:2013-02-15 12:13:13
【问题描述】:

我只想知道为什么setInterval()setTimeout()的时间结果不匹配?

语法:

setInterval(code,millisec,lang)
setTimeout(code,millisec,lang)

两者都使用毫秒..

为什么我总是随机得到i

所以我的测试函数看起来像......

var i = 0;

$("button").click(function() {

  var run = setInterval(function(){
    i++; $("code").html(i);
  },0);

  setTimeout(function(){
    clearInterval(run);
    i = 0;
  },2000);


});

为什么结果不显示 2000 ?还是我误解了什么?

如果最小。 setInterval() 的值是 4ms 为什么我没有得到相同的结果?

游乐场: http://jsbin.com/ezeliz/1/edit

【问题讨论】:

  • 你的问题是,为什么间隔循环没有达到 2000?
  • 是的,你的理解是对的 :D @Yoshi
  • 嗯,那么答案很简单。即使您请求 0 毫秒的间隔长度,也不能保证获得它,因此不应依赖设置值。如果您正在做的事情是时间敏感的,那么您需要自己跟踪呼叫之间的时间差。
  • 当然不是! This information 可能会有所帮助。

标签: javascript timer match settimeout setinterval


【解决方案1】:

setInterval(…, 0) 应该做什么?零时间后不能重复该功能,总会有一点延迟。实际上,该延迟甚至被标准化为 4 毫秒的minimum value。例如 Opera 12 在 2 秒内计数(几乎)到 500,这将匹配,其他浏览器可能有更大的延迟 (they are free to choose one)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多