Bla*_*ack 1 javascript while-loop settimeout
我尝试每隔2秒输出一个警告框,其中包含"hello"消息,但只有5次.所以我写了这段代码:
var counter = 1;
do {
setTimeout
(
function()
{
alert("hello");
counter++;
},
2000
);
} while( counter <= 5 );
Run Code Online (Sandbox Code Playgroud)
但我的页面每次都在崩溃?为什么?什么是在警报之间添加延迟2000毫秒的最佳方法?
但我的页面每次都会崩溃?为什么?
因为计数器仅在回调内递增 - 循环可能会尝试在该时间内运行数千次(如果不是数万次)并快速运行浏览器内存不足.更准确地说,正如注释中所指出的,循环永远不会放弃对setTimeout调用的控制- 因此永远不会运行(不要过分担心这里的区别 - 只是接受你的计数器没有递增)
什么是在警报之间添加2000毫秒延迟的最佳方法
只有在前一个完成后启动下一个.
function showHello(i){
if(i<5){
setTimeout
(
function()
{
alert("hello");
showHello(i+1)
},
2000
);
}
}
showHello(0);
Run Code Online (Sandbox Code Playgroud)
相关:可以在Javascript中链接setTimeout函数吗?以及如何在一段时间后或多次操作后停止setInterval?