JavaScript中有睡眠function吗?

JavaScript中有睡眠function吗?

您可以使用setTimeoutsetInterval函数。

如果您正在寻找阻止执行代码与调用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方法(如果存在的话)会如何performance完全不同。

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

如果您运行上述function,您将需要等待3秒钟( sleep方法调用被阻止),然后才能看到警报“hi”。 不幸的是,在JavaScript没有这样的sleepfunction。

 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'这个提示。

如果你运行上面的函数,你将不得不等待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> 
 function sleep(delay) { var start = new Date().getTime(); while (new Date().getTime() < start + delay); } 

这段代码没有被阻塞。 这是CPU占用代码。 这与线程阻塞自己并释放CPU周期以供其他线程使用不同。 这里没有这样的事情发生。 不要使用这个代码,这是一个非常糟糕的主意。