延迟/睡眠在JavaScript?

tkb*_*kbx 6 javascript

有一种简单的方法可以在Javascript中暂停脚本吗?我正在寻找time.sleep(1)Python中的javascript等价物.我不想要setTimeout(continueExecution, 10)任何东西getTime.可以这样做吗?

编辑:这不是那么容易,但我想我可以完成它 setTimeout

HoL*_*ieR 17

JavaScript通常使用事件循环在单个线程中运行.这就是为什么你不能做任何"Thread.sleep".如果可能,它会冻结其他一切,并相信我你不想那样做.这就是为什么JavaScript中的几乎所有内容都使用非阻塞IO运行的原因,这就是为什么延迟执行的唯一方法是使用setTimeout或setInterval.


jba*_*bey 7

如果没有setTimeout,您可以随时循环,直到达到所需的日期时间:

免责声明:这是未经测试的.由于javascript是单线程的,因此在循环时会冻结整个浏览器.有关此主题的更多信息,请参阅其他问题.

var delay = 5; // 5 second delay
var now = new Date();
var desiredTime = new Date().setSeconds(now.getSeconds() + delay);

while (now < desiredTime) {
    now = new Date(); // update the current time
}

// continue execution
Run Code Online (Sandbox Code Playgroud)

  • @HoLyVieR OP表示他想"暂停脚本" - 如果你暂停javascript,你就会阻止浏览器.期. (4认同)