您是否尝试设置超时来运行多个函数,并在它们之间有一些延迟?超时是在for循环内吗?您的函数是否同时启动,并且不遵守超时,或者以其他方式导致困惑的行为?
这样写很直观,但不正确:
for (var i = 0; i < moves.length; i++) {
setTimeout(chooseOne(moves[i]), i * 1000 + 1000);
}
解决方案:
解决方案是间接将 i 值传递给超时,如下所示。编写循环,在循环内调用超时函数并向该函数传递 i 值。
function clickedOne() {
for (var i = 0; i < moves.length; ++i) {
myTimeout(i);
}
}
然后在一个单独的函数中,设置超时,传递一个匿名函数作为第一个参数,在该函数内我调用我的 ChooseOne 函数并向其传递每次迭代的唯一值。现在您可以编写一个逗号,并为 setTimeout 提供第二个参数,即您的超时时间。我的超时是一秒乘以 i,因此每个函数将在其之前的函数之后一秒执行。
function myTimeout(i) {
setTimeout(function() { chooseOne(moves[i]); }, 1000 * i);
}
我实际上不知道为什么这有效,而第一种方法却无效。
最佳答案
试试这个:
var i = 0;
setTimeout(function(){
if(i < moves.length){
chooseOne(moves[i++]);
}
}, i * 1000 + 1000);
关于javascript - 如何在循环内设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637772/