我有一个JavaScript代码,我需要添加一个睡眠/等待函数。我正在运行的代码已经在一个函数中,例如。
function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}
我听说一个可能的解决方案可能包括
setTimeout
但我不确定在这种情况下如何使用它。
我不能使用PHP,因为我的服务器不支持它,尽管使用jQuery也可以。
JS没有睡眠函数,它有setTimeout()或setInterval()函数。
如果你能把暂停后需要运行的代码移到setTimeout()
回调中,你可以做这样的事情。
//code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
见这里的例子:
这不会停止你的脚本的执行,但只要setTimeout()
是一个异步函数,这个代码
console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
就会在控制台中打印出来。
HELLO
DOG
THIS IS
(注意DOG是在THIS IS之前打印的)
你可以使用以下代码来模拟短时间的睡眠。
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
现在,如果你想睡眠1秒,只需使用。
sleep(1000);
例如:http://jsfiddle.net/HrJku/1/
请注意,*这段代码会让你的脚本忙碌n毫秒。这不仅会使你的页面停止执行Javascript,而且根据浏览器的实现,可能会使页面完全没有反应,还可能使整个浏览器没有反应**。换句话说,这几乎总是错误的做法。