use*_*460 2 javascript for-loop repeat settimeout hypertalk
我之前已经看到这个问题已被提出过,但我不确定能解决我的问题.
我有以下代码:
function mouseup ( )
{
for( i = 0; i < 6; i++ )
{
setTimeout(function(){
alert( "test" );
},1000);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,暂停一秒后,对话框出现(应该如此),但是当我在该对话框上单击"确定"时,第二个立即出现,没有任何延迟.
有没有一种简单的方法可以解决这个问题,而无需更改太多的代码?我问的原因是因为我正在构建一个更改代码的转换器,例如:
repeat 6 times
wait for 1 second
answer "test"
end repeat
Run Code Online (Sandbox Code Playgroud)
进入上面的JavaScript代码,如果我没有,也不想改变我的转换程序太多.
提前谢谢了.
编辑:(如果您想知道,非JavaScript代码是HyperTalk/xTalk代码)
window.counter = 6;
function mouseup ( )
{
setTimeout(function(){
alert( "test" );
if ( window.counter-- ) {
mouseup ( );
}
},1000);
}
Run Code Online (Sandbox Code Playgroud)
用for循环你无法达到你想要的效果.在继续之前,for循环不会等待超时.要做你想做的事情,你需要将你的超时链接在一起,以便结束一个超时开始下一个超时:
var i = 0;
function TimeoutFired() {
i++;
alert( "test" );
if (i < 6) {
setTimeout(TimeoutFired, 1000);
}
}
setTimeout(TimeoutFired, 1000);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |