你是否試圖設置一個超時來運行多個函數,它們之間有一些延遲?是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