我想停止执行2秒钟。这是这样,但现在遵循代码块:
<html>
<head>
<title> HW 10.12 </title>
<script type="text/javascript">
for (var i = 1; i <= 5; i++) {
document.write(i);
sleep(2); //for the first time loop is excute and sleep for 2 seconds
};
</script>
</head>
<body></body>
</html>
第一次循环是执行并睡眠2秒。我想停止执行两秒钟?
答案 0 :(得分:107)
Javascript是单线程的,所以本质上不应该有睡眠功能,因为睡眠会阻塞线程。 setTimeout
是一种通过将事件发布到队列以便稍后执行而不阻塞线程来解决此问题的方法。但是如果你想要一个真正的睡眠功能,你可以这样写:
function sleep(miliseconds) {
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()) {
}
}
注意:以上代码推荐为 NOT 。
答案 1 :(得分:52)
暂停执行没有(安全)方式。但是,您可以使用setTimeout执行类似的操作:
function writeNext(i)
{
document.write(i);
if(i == 5)
return;
setTimeout(function()
{
writeNext(i + 1);
}, 2000);
}
writeNext(1);
答案 2 :(得分:21)
您可以使用setTimeout
执行此操作
function myFunction() {
// your code to run after the timeout
}
// stop for sometime if needed
setTimeout(myFunction, 5000);
答案 3 :(得分:3)
This Link可能对您有所帮助。
每次我想在我的函数中间进行睡眠时,我都重构了使用setTimeout()。
答案 4 :(得分:3)
无法像使用过程语言那样停止执行代码。 您可以使用setTimeout和一些技巧来获得参数化超时:
for (var i = 1; i <= 5; i++) {
var tick = function(i) {
return function() {
console.log(i);
}
};
setTimeout(tick(i), 500 * i);
}