私はSimon Saysプログラムで作業しています。コンピュータの一連の移動を呼び出して画面に表示する際に問題が発生しています。Javascript:forループをsetIntervalと同時に繰り返します。
このaiMoves()関数を使用して配列を反復し、適切なカラーボタンを強調表示して各移動を表示しようとしています。
var moves = function() {
aiTurns(randomNumber());
:
function aiTurns(randNum){
for(var i = 0; i < aiMoves.length; i++) {
if(aiMoves[i] === 1){
//sound1();
$('#green').addClass("active");
setTimeout(function(){
$('#green').removeClass("active");
}, 500);
}
else if(aiMoves[i] === 2){
//sound2();
$('#red').addClass("active");
setTimeout(function(){
$('#red').removeClass("active");
}, 500);
}
else if(aiMoves[i] === 3) {
//sound3();
$('#yellow').addClass("active");
setTimeout(function(){
$('#yellow').removeClass("active");
}, 500);
}
else if(aiMoves[i] === 4){
//sound4();
$('#blue').addClass("active");
setTimeout(function(){
$('#blue').removeClass("active");
}, 500);
}
level--;
playerTurn = true;
}
}
私はこのようにそれを呼ばれる:私は、そうのような次のボタンのハイライトは、プログラムが秒を待って、最初のボタンのハイライトとなるようのsetIntervalを使用しようとしています
}
setInterval(moves, 2000);
}
問題は、のsetIntervalは非同期であり、すべての反復でありますaiMoves()内のforループが同時に呼び出されます。配列の最初の要素が実行され、一時停止し、次の要素が実行されるように、これをどのように設定できますか?ここで
は、より良い視覚化のためのcodepenです: https://codepen.io/nick_kinlen/pen/oGjMMr?editors=0010
ありがとうございます!それがトリックでした。 –