我有一个需要添加睡眠/等待功能的 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()回调中,则可以执行以下操作:
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在 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,而且根据浏览器的实现,可能会使页面完全无响应,并可能使整个浏览器无响应。换句话说,这几乎总是错误的做法。