【问题标题】:How to set a timer in javascript如何在javascript中设置计时器
【发布时间】:2010-10-02 09:47:05
【问题描述】:

我要运行以下代码:

ajaxUpdate(10);

每次迭代之间有 1 秒的延迟。我该怎么做?

【问题讨论】:

  • 希望你的服务器能处理好这个问题。 :)

标签: javascript jquery


【解决方案1】:
var i = window.setInterval( function(){ 
          ajaxUpdate(10); 
 }, 1000 ); 

这将每秒调用 ajaxUpdate,直到它停止。

如果你想稍后停止:

window.clearInterval( i ); 

如果您只想运行它一次

var i = window.setTimeout( function(){ 
          ajaxUpdate(10); 
 }, 1000 ); 

会成功的,如果你想在它运行一次之前停止它运行

window.clearTimeout(i); 

“window”前缀并不是严格必要的,但它是一个好主意,因为您永远不知道其他人何时可能想在可见范围内创建具有相同名称但行为不同的其他东西。

对于这方面的完整参考,我总是觉得 MDC 非常有帮助:

另外,您可能希望阅读 John Resig 撰写的这篇关于计时器的文章,

【讨论】:

  • 您应该使用 window.setInterval() 而不是只使用 setInterval()(clearInterval 相同)
  • 链接到 javascript 文档会是一个很好的补充:developer.mozilla.org/en/DOM/window.setInterval
  • 为什么要在它前面加上“window”。 ?
  • 你不必这样做,这只是一个好主意,就像我在声明中所说的那样。
【解决方案2】:

你也可以用

setTimeout(function() {ajaxUpdate(10)}, 1000);

【讨论】:

  • 这只是一次,不是迭代
  • 这是适合这种情况的,因为 b4 每次迭代我都想检查一个条件,并且只有当它满足时,我才希望在下一次迭代中将计时器设置为 4。使用 setInterval 它将自动运行。没有检查我不想要的条件。而且这个1更简单
  • 我发现第二个答案(来自 Kent Fredric)更加完整和详细。它还提供了多种实现目标的方法。这个答案也不错,但只是不完整,对社区没有那么有用,所以我个人建议你接受 Kent 的答案。
【解决方案3】:

您可以为此使用setInterval()。创建要调用的匿名函数,并以毫秒为单位使用时间:

var myInterval = window.setInterval(function() { ajaxUpdate(10); }, 1000);

【讨论】:

  • 你应该使用 window.setInterval() 而不仅仅是 setInterval()
  • 我需要使用 var myInterval=... 还是只调用 = 右侧的代码就可以了?
  • 如果你想在某个时候再次停止它,你只需要 "var myInterval = "
  • 它可以在没有分配的情况下工作,但正如 Kent Fredric 在他的回答中解释的那样,分配让您可以选择稍后取消间隔。
  • 如果在没有赋值的情况下调用,代码会继续每1秒运行一次直到被取消,还是只运行一次?
【解决方案4】:

您可以使用这个JavaScript Timer 类。

【讨论】:

    【解决方案5】:

    你也可以使用jQuery Timers:http://plugins.jquery.com/project/timers

    【讨论】:

      【解决方案6】:

      您可以使用函数 setTimeout(String fonc, Integer delay)。例如,要每秒执行一次代码,您可以这样做:

      window.setTimout("ajaxUpate",100);
      

      希望我能回答你的问题;)

      【讨论】:

      • 哎呀,每个人都在同一分钟回答!
      • 强烈不推荐使用字符串,它太模棱两可了。
      • 另外,在您的示例中,ajaxUpdate 将使用半随机值调用,而不是他请求的固定值“10”。
      • 好的,感谢您的评论,我不知道它可以将函数用作第一个参数。
      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 2021-09-22
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多