在 JavaScript 中休眠 - 动作之间的延迟

新手上路,请多包涵

有没有一种方法可以让我在 JavaScript 执行其他操作之前先休眠?

例子:

 var a = 1 + 3;
// Sleep 3 seconds before the next action here.
var b = a + 4;

原文由 Jin Yong 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 591
2 个回答

您可以使用 setTimeout 来达到类似的效果:

 var a = 1 + 3;
var b;
setTimeout(function() {
    b = a + 4;
}, (3 * 1000));

这并不是真正“睡眠”JavaScript——它只是在一定时间(以毫秒为单位指定)后执行传递给 setTimeout 的函数。虽然可以为 JavaScript 编写睡眠函数,但最好使用 setTimeout 如果可能的话,因为它不会在睡眠期间冻结所有内容。

原文由 Steve Harrison 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您真的需要 sleep() 只是为了测试一些东西。但请注意,它会在调试时大部分时间使浏览器崩溃 - 可能这就是您无论如何都需要它的原因。在生产模式下,我会注释掉这个函数。

 function pauseBrowser(millis) {
    var date = Date.now();
    var curDate = null;
    do {
        curDate = Date.now();
    } while (curDate-date < millis);
}

不要在循环中使用 new Date() ,除非你想浪费内存、处理能力、电池甚至设备的使用寿命。

原文由 Rodrigo 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题