JavaScript休眠/继续前等待[重复]

这个问题在这里已经有答案了
sleep()的JavaScript版本是什么?

(85个答案)

八年前关闭的

我有一个JavaScript代码,需要添加一个sleep/wait函数。我正在运行的代码已经在函数中,例如:

函数myFunction(时间)
{
警报(“时间现在开始”);
//使程序在继续之前等待的代码
警报(“时间到了”)
}

我听说一个可能的解决办法可能包括

设置超时

但我不知道在这种情况下如何使用它

我不能使用PHP,因为我的服务器不支持它,尽管使用jQuery也可以

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

如果可以将暂停后需要运行的代码移动到setTimeout()回调中,则可以执行以下操作:

//暂停前的代码
setTimeout(函数(){
//在这里做你需要的
}, 2000);

请参见此处的示例:http://jsfiddle.net/9LZQp/

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

console.log("HELLO");
setTimeout(函数(){
console.log(“这是”);
}, 2000);
console.log(“DOG”);

将在控制台中打印此内容:

你好

这是

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


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

函数睡眠(毫秒){
var start=new Date().getTime();
对于(变量i=0;i<1e7;i++){
如果((新日期().getTime()-start)>毫秒){
打破
}
}
}

现在,如果您想睡眠1秒,只需使用:

睡眠(1000);

例如:http://jsfiddle.net/HrJku/1/

请注意,此代码将使脚本在n毫秒内保持忙碌状态。这不仅会停止在页面上执行Javascript,而且根据浏览器的实现,可能会使页面完全无响应,也可能使整个浏览器无响应。换句话说,这样做几乎总是错误的

发表评论