JavaScript中是否有睡眠/暂停/等待功能?

Ric*_*ard 191 javascript sleep

可能重复:
sleep()的JavaScript版本是什么?

是否有一个JavaScript函数模拟sleepPHP中函数的操作- 一个暂停代码执行x毫秒的函数,然后从它停止的地方恢复?

我在Stack Overflow上找到了一些东西,但没什么用处.

Dio*_*ane 189

您需要将代码重新分解为多个部分.这不会停止执行,只会在各部分之间造成延迟.

function partA() {
  ...
  window.setTimeout(partB,1000);
}

function partB() {
   ...
}
Run Code Online (Sandbox Code Playgroud)

  • 这个答案只有一半是正确的.`setTimeout()`与`sleep()`不同.`setTimeout()`调度命名函数,以便在将来的设定时间异步执行.其余的代码不会等到`partB`函数执行,这与`sleep()`的功能不同.请参阅:http://stackoverflow.com/questions/4122268/using-settimeout-synchronously-in-javascript (25认同)
  • 如果你把它包装在一个匿名函数中,比如Michael Haren的答案,那么你可以. (5认同)
  • 你可以在`window.setTimeout(partB,1000)`将参数传递给`partB`吗? (3认同)
  • 这也回答了一个古老的问题:"B部分之前是什么?" (2认同)

Mic*_*ren 115

您不能(也不应该)使用睡眠功能阻止处理.但是,您可以setTimeout在延迟后使用启动功能:

setTimeout(function(){alert("hi")}, 1000);
Run Code Online (Sandbox Code Playgroud)

根据您的需要,setInterval也可能有用.

  • `sleep`不会阻止处理; 它允许继续处理. (9认同)
  • @Bananenaffe-如果我在该文档页面上阅读了正确的警告,问题不在于匿名函数,而是作为“字符串”传递的代码,必须通过“eval”执行。 (3认同)

rap*_*hie 13

setTimeout()函数用于延迟JavaScript中的进程.

w3schools有一个关于这个功能的简单教程.

  • w3School不可靠,请改用:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout (13认同)