JavaScript中是否有睡眠功能?

时间:2009-07-17 03:16:53

标签: javascript

JavaScript中是否有睡眠功能?

4 个答案:

答案 0 :(得分:287)

如果您希望通过调用sleep来阻止代码的执行,那么不,JavaScript中没有相关的方法。

JavaScript确实有setTimeout方法。 setTimeout会让你推迟执行x毫秒的函数。

setTimeout(myFunction, 3000);

// if you have defined a function named myFunction 
// it will run after 3 seconds (3000 milliseconds)

请记住,这与sleep方法(如果存在)的行为方式完全不同。

function test1()
{    
    // let's say JavaScript did have a sleep function..
    // sleep for 3 seconds
    sleep(3000);

    alert('hi'); 
}

如果您运行上述功能,则必须等待3秒钟(sleep方法调用阻止)才能看到警报“hi”。遗憾的是,sleep中没有JavaScript函数。

function test2()
{
    // defer the execution of anonymous function for 
    // 3 seconds and go to next line of code.
    setTimeout(function(){ 

        alert('hello');
    }, 3000);  

    alert('hi');
}

如果你运行test2,你会立即看到'hi'(setTimeout是非阻塞的),3秒后你会看到警告'hello'。

答案 1 :(得分:73)

您可以使用setTimeoutsetInterval功能。

答案 2 :(得分:65)

如果运行上述功能,则必须等待3秒钟(睡眠方法调用阻塞)

<strong class="highlight">function</strong> myFunction(){
       doSomething();
       sleep(500);
       doSomethingElse();
    }


<html>
  <head>
    <script type="text/javascript">
      /**
       * Delay for a number of milliseconds
       */
      function sleep(delay) {
        var start = new Date().getTime();
        while (new Date().getTime() < start + delay);
      }
    </script>
  </head>
  <body>
    <h1>Eureka!</h1>
      <script type="text/javascript">
        alert("Wait for 5 seconds.");
        sleep(5000)
        alert("5 seconds passed.");
      </script>
  </body>
</html>

答案 3 :(得分:41)

function sleep(delay) {
    var start = new Date().getTime();
    while (new Date().getTime() < start + delay);
}

此代码会阻止指定的持续时间。这是CPU占用代码。这不同于线程阻塞自身并释放CPU周期以供另一个线程使用。这里没有这样的事情发生。不要使用这个代码,这是一个非常糟糕的主意。