inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹 게임을 만들며 배우는 자바스크립트

변수를 사용해 중복 제거하기

가위바위보 강의를 보면서 질문이 있습니다.

해결된 질문

205

서진웅

작성한 질문수 3

0

안녕하세요 제로초님 강의 잘 듣고 있습니다.

가위바위보 강의를 들으면서 코드를 직접 쳐보고 테스트를 해보았는데, 해결되지 않는 부분이 있어서 질문드립니다.

가위,바위,보 버튼을 누를 때 clearInterval을 시키고 1초 딜레이 이후에 인터벌을 다시 실행하는 코드에서 (아래는 깃허브에 제로초님 코드를 가져왔습니다.)

var 인터벌;
function 인터벌메이커() {
  인터벌 = setInterval(function () {
    if (이미지좌표 === 가위바위보.바위) {
      이미지좌표 = 가위바위보.가위;
    } else if (이미지좌표 === 가위바위보.가위) {
      이미지좌표 = 가위바위보.보;
    } else {
      이미지좌표 = 가위바위보.바위;
    }
    document.querySelector('#computer').style.background =
      'url(https://en.pimg.jp/023/182/267/1/23182267.jpg) ' + 이미지좌표 + ' 0';
  }, 100);
}

인터벌메이커();

document.querySelectorAll('.btn').forEach(function(btn) {
 btn.addEventListener('click', function() {
   clearInterval(인터벌); // setInterval 중지
   setTimeout(function() {
     인터벌메이커();
   }, 1000);
  });
});

이렇게 되어있는데 가위,바위,보 버튼을 연속적으로 빠르게 누르다 보면 인터벌메이커() 함수가 중첩으로 실행이 되어서 결국에는 1초 딜레이 무효화되는 현상을 보게 되었는데 어떻게 하면 제대로 구현할 수 있을지 여쭤봅니다.

제 생각에는 clearInterval 메소드 안에 setTimeout을 넣어봐서 실행하면 되지 않을까 했는데(아래 코드 처럼)

document.querySelectorAll('.btn').forEach(function(btn) {
 btn.addEventListener('click', function() {
   clearInterval(인터벌, setTimeout(function(){
      인터벌메이커();
   }, 1000)); 
});

여전히 안되더라구요

javascript

답변 1

0

제로초(조현영)

좀 더 쉬운 접근법으로는 클릭시 버튼들을 비활성화 하고 1초 뒤에 활성화하면 될 것 같습니다~

iput 입력글자 제한에러...

0

227

0

리팩토링 관련 질문입니다. (자스스톤)

0

276

1

카드 짝맞추기 react-native

0

340

0

필터 메소드 관련 질문입니다.

0

339

1

가위바위보 게임 질문드립니다~

0

204

1

자바스크립트 기초에 관해서 질문있습니다.

0

208

1

질문입니다.

1

359

1

이벤트 리스너 안에서 동작 질문드립니다.

0

325

2

질문드립니다.

0

190

0

안녕하세요 깊은 복사 부분에서 질문 있습니다.

0

245

1

document.createElement('')함수에서

0

249

2

안녕하세요 클로저 부분에서 질문 있습니다.

0

280

1

안녕하세요 제로초님

0

739

1

끝말잇기 화면에 출력 반복문을 이용해서 횟수 제한

0

246

1

안녕하세요 제로초님 질문있습니다

0

317

1

안녕하세요 강의 정말 잘시청하고있습니다.

0

277

3

?

0

152

1

틱택토 게임에서 게임이 끝나고

0

567

1

9 곱하는게 이해가 안 되요~

0

174

1

지뢰찾기 에러잡아내기에서 질문있습니다!

0

459

4

지뢰찾기 에러 관련 질문!

0

484

3

리팩토링에 관한 질문입니다.

0

244

2

Array/Object spread

0

204

1

지뢰찾기게임에서 Math.random() 질문

0

224

1