2013-08-03 36 views
-2

例如,JavaScript代码如下:如何在JavaScript中的setInterval函数中添加条件检查?

<!DOCTYPE html> 
<html> 
    <body> 
     <script> 
      var val = 0; 

      var p2 = setInterval(function(){proc2()},1000); 
      function proc2() 
      { 
       // while (val == 0); 
       alert(val); 
       clearInterval(p2); 
      } 

      var p1 = setInterval(function(){proc1()},1000); 
      function proc1() 
      { 
       val = 1; 
       clearInterval(p1); 
      } 

     </script> 

    </body> 
</html> 

在功能proc2(),我想拥有它执行时val的值设置为1。所以,我添加了while(val==0);线,但它不没有工作。浏览器卡住了。它有什么问题?在JavaScript中的setInterval函数中添加条件检查的正确方法是什么?

+1

有点不清楚你想要什么。你想在'val == 1'时运行'proc2()',或者你调用函数的时间不同,'clearInterval(p2);'只有在'val == 1'时才运行? – Sergio

+0

@Sergio当'val == 1'时 – injoy

+0

确定,但你不回答我的问题:如果val == 1或函数一直运行,则运行该函数,并且该函数的内容仅在val == 1时运行? – Sergio

回答

0

它卡在while循环中。除非满足条件,否则在setInterval中使用return来执行代码。

While的问题在于,它保持循环通过,永远不会离开循环,释放其他任何调用的线程。

+0

为了防止您使用jQuery,您可能会从[jQuery定时器](https://github.com/adrenalin/jquery.timers)中获益匪浅,它为直观使用setInterval和setTimeout提供了一个很好的抽象层,并提供了简单的stopTime和定时器的标签。 – adrenalin

相关问题