JavaScript中是否有睡眠功能?
答案 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)
您可以使用setTimeout
或setInterval
功能。
答案 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周期以供另一个线程使用。这里没有这样的事情发生。不要使用这个代码,这是一个非常糟糕的主意。