JavaScript中有睡眠function吗?
JavaScript中有睡眠function吗?
您可以使用setTimeout
或setInterval
函数。
如果您正在寻找阻止执行代码与调用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
没有这样的sleep
function。
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周期以供其他线程使用不同。 这里没有这样的事情发生。 不要使用这个代码,这是一个非常糟糕的主意。