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函数。
有关完整的解释,请参阅: