JavaScript中Java的Thread.sleep()的等价物是什么?

JavaScript中Java的Thread.sleep()的等价物是什么?

简单的答案是没有这样的function。

你最接近的是:

 var millisecondsToWait = 500; setTimeout(function() { // Whatever you want to do after the wait }, millisecondsToWait); 

请注意,您特别不希望忙于等待(例如,在旋转循环中),因为您的浏览器几乎肯定会在单线程环境中执行您的JavaScript。

这里有几个其他的SO问题处理JavaScript中的线程:

  • JavaScript和线程
  • 为什么JavaScript不支持multithreading?

这个问题也可能有帮助:

  • setTimeout – 如何避免使用stringcallback?

试试这个代码。 我希望这对你有用。

 function sleep(seconds) { var e = new Date().getTime() + (seconds * 1000); while (new Date().getTime() <= e) {} } 

没有直接的等价物,因为它会暂停一个网页。 但是有一个setTimeout() ,例如:

 function doSomething() { thing = thing + 1; setTimeout(doSomething, 500); } 

closures示例(感谢丹尼尔):

 function doSomething(val) { thing = thing + 1; setTimeout(function() { doSomething(val) }, 500); } 

第二个参数是在发射之前的毫秒数,你可以在执行操作之前使用这个参数来处理时间事件或等待。

编辑:根据评论更新更清洁的结果。

你可以写一个旋转循环(一个循环,只是循环很长一段时间执行某种计算来延迟函数)或使用:

 setTimeout("Func1()", 3000); 

这将在3秒后调用“Func1()”。

编辑:

信用评论给评论者,但你可以通过匿名函数setTimeout。

 setTimeout(function() { //Do some stuff here }, 3000); 

这是更有效的,不会调用javascript的eval函数。

这最终帮助我:

  var x = 0; var buttonText = 'LOADING'; $('#startbutton').click(function(){ $(this).text(buttonText); window.setTimeout(addDotToButton,2000); }) function addDotToButton(){ x++; buttonText += '.'; $('#startbutton').text(buttonText); if (x < 4) window.setTimeout(addDotToButton, 2000); else location.reload(true); } 

setTimeout不会保留并在您自己的线程上恢复,但是Thread.sleep会。 在Javascript中没有实际的平等

或者,也许你可以使用setInterval函数,在指定的毫秒数后调用一个特定的函数。 只要做一个谷歌的setInterval原型。我不完全记得它。

假设您可以使用ECMAScript 2017,则可以使用async / await和setTimeout来模拟类似的行为。 这里有一个睡眠function的例子:

 async function sleep(msec) { return new Promise(resolve => setTimeout(resolve, msec)); } 

然后,您可以在任何其他asynchronous函数中使用睡眠函数,如下所示:

 async function testSleep() { console.log("Waiting for 1 second..."); await sleep(1000); console.log("Waiting done."); // Called 1 second the first console.log } 

这很好,因为它避免了需要callback。 不利的一面是它只能用于asynchronousfunction。 testSleep函数在幕后暂停,在睡眠完成后恢复。

来自MDN:

awaitexpression式导致asynchronous函数执行暂停,直到Promise完成或拒绝,并在履行完成后恢复执行asynchronous函数。

有关完整的解释,请参阅: