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

问题

什么相当于JavaScript的JavaThread.sleep()


#1 热门回答(170 赞)

简单的答案是没有这样的功能。

你最接近的是:

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

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

以下是一些处理JavaScript中的线程的其他SO问题:

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

这个问题也可能有所帮助:

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

#2 热门回答(50 赞)

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

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

#3 热门回答(7 赞)

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

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

关闭示例(感谢Daniel):

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

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

**编辑:**根据更清晰结果的注释更新。