JavaScript在继续之前先休眠/等待

JavaScript sleep/wait before continuing

本文关键字:休眠 等待 继续 JavaScript      更新时间:2023-09-26

我有一个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);

参见这里的例子:http://jsfiddle.net/9LZQp/

这不会停止脚本的执行,但是由于setTimeout()是一个异步函数,因此这段代码

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,而且根据浏览器的实现,可能会使页面完全无响应,并可能使整个浏览器无响应。换句话说,这几乎总是错误的。