你是否试图设置一个超时来运行多个函数,它们之间有一些延迟?是for循环内的超时?您的功能是否都在同一时间触发,不尊重超时,否则会导致混乱的行为?如何在循环内设置Timeout
这是直观的,但不正确的将它写这样的:
for (var i = 0; i < moves.length; i++) {
setTimeout(chooseOne(moves[i]), i * 1000 + 1000);
}
SOLUTION:
的解决方案是将I值间接地传递到超时,这样的。编写循环,在循环内调用你的超时函数,并将该函数传递给i值。
function clickedOne() {
for (var i = 0; i < moves.length; ++i) {
myTimeout(i);
}
}
然后在一个单独的功能,设置超时时间,通过一个匿名函数作为第一个参数,该函数我把我的chooseOne功能,通过它的独特价值对于每次迭代里面。现在你可以写一个逗号,并为你的超时setTimeout提供第二个参数。我的超时是我的一秒钟,所以每个函数都会在它之前的一秒之后执行。
function myTimeout(i) {
setTimeout(function() { chooseOne(moves[i]); }, 1000 * i);
}
我实际上不知道这是为什么,第一种方法没有。
'moves.forEach(功能(移动,ⅰ){ 的setTimeout(函数(){ chooseOne(移动); } I * 1000 + 1000); } );' –
http://stackoverflow.com/questions/5226285/settimeout-in-for-loop-does-not-print-consecutive-values –
你能解释一下Arun P Johny – PencilCrate