重複の可能性: forループでsetTimeout
を使用する方法
forループでsetTimeoutを呼び出す方法
私の場合、setTimeout
関数はforループ内では機能しません。すべてのforループステートメントが実行された後に実行されます。
setTimeout
javascriptの関数の場合、このスコープの問題に直面しています。
これが私のコードスニペットです。
... moves[] is an array ..
for(i=0;i<noOfMoves;i++) {
playerName = moves[i].playerName;
timeDiff = moves[i].timeDiff;
console.log("Inside for loop"+ playerName);
setTimeout(function(){
console.log("Inside set time out :"+playerName);
},timeDiff);
....
....
}
しかし、それは厄介に次の出力を出力します...
Inside for loopplayer1
Inside for loopplayer2
Inside for loopplayer3
Inside for loopplayer4
.... (noOfMoeves times .. )
Inside set time outplayer1
Inside set time outplayer1
Inside set time outplayer1
Inside set time outplayer1
編集 :
私は次の方法のo/pが欲しいです
コードが1行ずつ表示されることを期待しています..最初に" "コンソールログを出力し、次に " "期間Inside for loop
待機してから、" "関数コンソールログを出力します..どうすればよいですか?– </ p>
timeDiff
Inside settimeout
Inside for loopplayer1
Inside set time outplayer1 // (after waiting for timeDiff time)
Inside for loopplayer2
Inside set time outplayer2 // (after waiting for timeDiff time)
......
......
また、playerName変数は各settimeoutコンソールログステートメントで同じ値を取得していますか?