我有一个JavaScript代码,需要在其中添加睡眠/等待功能。我正在运行的代码已经在一个函数中,例如:
function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}
我听说可能的解决方案可能包括
setTimeout
,但是我不确定在这种情况下如何使用它。
我不能使用PHP,因为我的服务器不支持PHP,尽管使用jQuery可以。
#1 楼
JS没有睡眠功能,它具有setTimeout()或setInterval()函数。如果您可以将暂停后需要运行的代码移动到
setTimeout()
回调中,则可以执行以下操作://code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
在此处查看示例:http://jsfiddle.net/9LZQp/
这不会停止脚本的执行,但是由于
setTimeout()
是异步函数,因此代码console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
将在控制台中打印此代码:
HELLO
DOG
THIS IS
(请注意,DOG是在此之前打印的)
您可以使用以下代码要模拟短时间的睡眠:
现在,如果要睡眠1秒钟,只需使用:
例如:http:// jsfiddle。 net / HrJku / 1 /
请注意,此代码将使您的脚本忙n毫秒。这不仅会停止页面上Javascript的执行,而且取决于浏览器的实现,可能会使页面完全无响应,并可能使整个浏览器无响应。换句话说,这几乎总是错误的做法。
评论
它会冻结浏览器,如果您睡眠超过10秒钟,浏览器会显示警报:此页面上的脚本可能很忙,或者可能已停止响应。您可以立即停止脚本,在调试器中打开脚本,或者继续执行脚本。
– Ikrom
2013年6月1日15:55
你好!这是一个繁忙的等待循环。当然,它不能成为公认的答案。
–老盖泽
13年11月19日在1:41
如果暂停时间过长,则会锁定浏览器,占用大量CPU,导致移动设备上的执行中断
–保罗
2014年1月26日上午11:24
setTimeout()涉及回调,这意味着它是异步的。 OP要求停止某些事情,这是同步的并且会导致中断。
– Ilan Biala
2014年4月4日22:51
我一直在寻找用于调试目的的繁忙循环,因此即使不打算在生产环境中使用它,这也正是我想要的。
–流感
2015年4月1日在9:47
评论
该代码将为setTimeout(function(){alert('time up up')},time); (而不是\`行和其下方的alert`行),时间以毫秒为单位给出developer.mozilla.org/en-US/docs/Web/API/window.setTimeout出于什么原因,您必须让脚本等待?
谢谢大家。是否可以使函数sleepNow(time)可以在脚本中调用,例如sleepNow(5000)以使睡眠5秒钟?
函数sleep(_ms = 0){var _start = new Date()。getTime(); while(_ms>(new Date()。getTime()-_start)){}}
我想重新提出这个问题。因为在这里我们可以提供仅与浏览器相关的答案,