setInterval 자바 질문 채택완료
와칸다포에버
6년 전
조회 2,518
</p>
<p>function test() {</p>
<p>var count = 5;</p>
<p>setInterval(function() {</p>
<p>count--;</p>
<p> </p>
<p>if (count == 0) {</p>
<p>return true;</p>
<p>}</p>
<p> </p>
<p>return false;</p>
<p>}, 1000);</p>
<p> </p>
<p>console.log('1');</p>
<p>}</p>
<p>
라고 소스를 짰는데 test(); 호출하니까 console.log('1');이 찍혀버리네요..;?
if 문으로 count 0이면 return true돼서 console.log 부분으로 가게 한건데
test(); 함수 호출하자마자 콘솔찍히네요.. 뭐죠?
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
6년 전
setInterval 이나 이벤트 처리등은 비동기식 처리방식이기때문에 병렬적으로 실행됨니다.
test() 함수 호출시 내부 setInterval 이 끝날때까지 대기하는것이 아닌 병렬 실행시키고 바로 다음
console.log('1'); 코드로 넘어가게됨니다.
원하는 흐름을 만들기위해선 setInterval 안에 조건문으로 console.log('1'); 를 해주시면 됨니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 5개
�
와칸다포에버
6년 전
setInterval 안에서는 외부 함수를 호출할 수 없더라구요 setInterval 내부에서 코드를 넣으면 외부에 접근을 못하고 외부에서 실행시키면 병렬실행이 돼서 난감하네요.
�
치메즈라
6년 전
setInterval 사용시 setInterval(function() { 형태로 사용하는것은 함수자체를 외부에 구현해놓지않고
내부에 구현하는형태이기때문에 그런문제가 발생할수있지만 실제 setInterval() 함수는
setInterval(실행하고자하는 함수명, 시간) <--형태로 사용할수있습니다.
그러니 외부에 함수를 구현해놓고 그 해당 함수명만 setInterval 의 첫번째 인자로 넣어주는형태로
사용하신다면 문제가 해결될것으로 보임니다.
내부에 구현하는형태이기때문에 그런문제가 발생할수있지만 실제 setInterval() 함수는
setInterval(실행하고자하는 함수명, 시간) <--형태로 사용할수있습니다.
그러니 외부에 함수를 구현해놓고 그 해당 함수명만 setInterval 의 첫번째 인자로 넣어주는형태로
사용하신다면 문제가 해결될것으로 보임니다.
�
와칸다포에버
6년 전
callback 펑션으로 마무리하였습니다 ㅎㅎ
�
치메즈라
6년 전
고생하셨습니다.
�
와칸다포에버
6년 전
답변 감사합니다 ㅎ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인