如何在javascript中设置计时器

Cli*_*ote 10 javascript jquery

我想运行以下代码:

ajaxUpdate(10);
Run Code Online (Sandbox Code Playgroud)

每次迭代之间延迟1秒.我怎样才能做到这一点?

Ken*_*ric 39

var i = window.setInterval( function(){ 
          ajaxUpdate(10); 
 }, 1000 ); 
Run Code Online (Sandbox Code Playgroud)

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

如果你想稍后停止它:

window.clearInterval( i ); 
Run Code Online (Sandbox Code Playgroud)

如果你只希望运行一次,

var i = window.setTimeout( function(){ 
          ajaxUpdate(10); 
 }, 1000 ); 
Run Code Online (Sandbox Code Playgroud)

会做的伎俩,如果你想在它运行一次之前阻止它运行

window.clearTimeout(i); 
Run Code Online (Sandbox Code Playgroud)

"window"前缀不是严格的nessecary,但它是一个好主意,因为你永远不知道别人可能想要在可见范围内创建具有相同名称且行为不同的其他东西.

有关此的完整参考,我总是发现MDC非常有帮助:

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


Rai*_*baz 6

你也可以这样做

setTimeout(function() {ajaxUpdate(10)}, 1000);
Run Code Online (Sandbox Code Playgroud)

  • 我发现第二个答案(来自Kent Fredric)的方式更加完整和详细.它还提供了多种实现目标的方法.这个答案也很好,但它只是不完整而且对社区没那么有用,所以我个人建议你接受肯特的回答. (2认同)

Gre*_*reg 5

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

var myInterval = window.setInterval(function() { ajaxUpdate(10); }, 1000);
Run Code Online (Sandbox Code Playgroud)