在JavaScript中,什么相当于Java的Thread.sleep() ?


当前回答

或者您可以使用setInterval函数,在指定的毫秒数之后调用特定的函数。只需为setInterval原型执行谷歌即可。我不太记得了。

其他回答

为获得最佳解决方案,ecma脚本2017使用async/await语句

Await只能在async函数内部使用

function sleep(time) {
    return new Promise((resolve) => {
        setTimeout(resolve, time || 1000);
    });
}

await sleep(10000); //this method wait for 10 sec.

注意:async / await并不像thread那样实际停止线程。睡觉,但是要模拟

或者您可以使用setInterval函数,在指定的毫秒数之后调用特定的函数。只需为setInterval原型执行谷歌即可。我不太记得了。

简单的答案是不存在这样的函数。

最接近你的东西是:

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

注意,你特别不想忙着等待(例如在一个旋转循环中),因为你的浏览器几乎肯定是在单线程环境中执行你的JavaScript。

下面是一些其他关于JavaScript线程的SO问题:

JavaScript和线程 为什么JavaScript不支持多线程?

这个问题可能也有帮助:

setTimeout -如何避免使用字符串回调?

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

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

闭包例子(谢谢Daniel):

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

第二个参数是触发前的毫秒数,您可以将其用于时间事件或执行操作前的等待。

编辑:根据注释更新,以获得更清晰的结果。

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

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