我想在 while
循环中添加延迟/睡眠:
我试过这样:
alert('hi');
for(var start = 1; start < 10; start++) {
setTimeout(function () {
alert('hello');
}, 3000);
}
只有第一种情况是正确的:在显示 alert('hi')
后,它会等待 3 秒,然后会显示 alert(‘hello’ alert('hello')
但随后会不断重复 alert('hello')
。
我想要的是在 alert('hello')
之后 3 秒显示 alert('hi')
然后它需要等待 3 秒第二次 alert('hello')
等等。
原文由 olidev 发布,翻译遵循 CC BY-SA 4.0 许可协议
setTimeout()
函数是非阻塞的,将立即返回。因此,您的循环将非常快速地迭代,并且它将快速连续地启动 3 秒超时触发器。这就是为什么您的第一个警报会在 3 秒后弹出,然后所有其他警报都会连续出现,没有任何延迟。您可能想改用这样的东西:
您还可以通过使用自调用函数来整理它,将迭代次数作为参数传递: