저는 Simon Says 프로그램에서 작업 중이며 컴퓨터의 일련의 동작을 호출하여 화면에 표시하는 문제에 직면하고 있습니다.자바 스크립트 : setInterval을 통해 for 루프를 동 기적으로 반복합니다.
이 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 루프가 동시에 호출됩니다. 배열의 첫 번째 요소가 실행되고 일시 중지 된 후 다음 요소가 실행되도록 어떻게 설정합니까? for
루프가 완료 될 때까지 즉시 실행 https://codepen.io/nick_kinlen/pen/oGjMMr?editors=0010
감사합니다. 그것은 트릭을했다. –