JavaScript睡眠/等待继续之前

我有一个JavaScript代码,我需要添加睡眠/等待function。 我正在运行的代码已经在一个函数中,例如:

function myFunction(time) { alert('time starts now'); //code to make the program wait before continuing alert('time is up') } 

我听说可能的解决scheme可能包括

 setTimeout 

但是我不确定如何在这种情况下使用它。

我不能使用PHP,因为我的服务器不支持它,尽pipe使用jQuery会很好。

JS没有睡眠函数,它有setTimeout()setInterval()函数。

如果您可以将需要在暂停后运行的代码移动到setTimeout()callback函数中,可以这样做:

 //code before the pause setTimeout(function(){ //do what you need here }, 2000); 

看到这里的例子: http : //jsfiddle.net/9LZQp/

这不会停止脚本的执行,但只要setTimeout()是一个asynchronous函数,就是这个代码

 console.log("HELLO"); setTimeout(function(){ console.log("THIS IS"); }, 2000); console.log("DOG"); 

将在控制台中打印这个:

 HELLO DOG THIS IS 

(请注意, DOG是在之前打印的)


您可以使用以下代码短时间模拟睡眠:

 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的执行,而且还取决于浏览器的实现,可能会使页面完全无响应,并可能使整个浏览器无响应 。 换句话说,这几乎总是做错事。