Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript睡眠/等待,然后继续_Javascript_Jquery_Delay_Sleep_Wait - Fatal编程技术网

JavaScript睡眠/等待,然后继续

JavaScript睡眠/等待,然后继续,javascript,jquery,delay,sleep,wait,Javascript,Jquery,Delay,Sleep,Wait,我有一个JavaScript代码,需要添加一个sleep/wait函数。我正在运行的代码已经在函数中,例如: function myFunction(time) { alert('time starts now'); //code to make the program wait before continuing alert('time is up') } 我听说一个可能的解决办法可能包括 setTimeout 但我不知道在这种情况下如何使用它 我不能使用PHP,因

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

function myFunction(time)
{
    alert('time starts now');
    //code to make the program wait before continuing
    alert('time is up')
}
我听说一个可能的解决办法可能包括

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


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

JS没有睡眠函数,它有或函数

如果可以将暂停后需要运行的代码移动到
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在这是之前打印)


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

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
例如:


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

代码应该是
setTimeout(函数(){alert('time is up')},time)(而不是
\`行和它下面的
警报`行),时间是以毫秒为单位给出的,您为什么要让脚本等待?谢谢大家。是否可以在脚本中调用一个函数sleepNow(time),例如sleepNow(5000)来休眠5秒?函数sleep(_ms=0){var_start=new Date().getTime();而(_ms>(new Date().getTime()-_start)){}我想重新打开这个问题。因为在这里我们可以给出只与浏览器相关的答案,它会冻结浏览器,如果您睡眠时间超过10秒,浏览器会显示警报:
此页面上的脚本可能正忙,或者可能已停止响应。您可以立即停止脚本,在调试器中打开脚本,或让脚本继续。
。您好!这是一个繁忙的等待循环。当然,这不是可接受的答案。这会锁定浏览器,占用大量cpu,如果暂停时间过长,会导致移动设备上的执行中断
setTimeout()
涉及回调,这意味着它是异步的。OP要求一些暂停的东西,这是同步的,会导致中断。我正在寻找一个繁忙的循环用于调试目的,所以即使这不是用于生产环境,它也正是我所寻找的。
sleep(1000);