테스트 사이트 - 개발 중인 베타 버전입니다

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개

치메즈라

setInterval 이나 이벤트 처리등은 비동기식 처리방식이기때문에 병렬적으로 실행됨니다.

test() 함수 호출시 내부 setInterval 이 끝날때까지 대기하는것이 아닌 병렬 실행시키고 바로 다음 

console.log('1'); 코드로 넘어가게됨니다. 

원하는 흐름을 만들기위해선 setInterval 안에 조건문으로 console.log('1'); 를 해주시면 됨니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

와칸다포에버
6년 전
setInterval 안에서는 외부 함수를 호출할 수 없더라구요 setInterval 내부에서 코드를 넣으면 외부에 접근을 못하고 외부에서 실행시키면 병렬실행이 돼서 난감하네요.
치메즈라
6년 전
setInterval 사용시 setInterval(function() { 형태로 사용하는것은 함수자체를 외부에 구현해놓지않고

내부에 구현하는형태이기때문에 그런문제가 발생할수있지만 실제 setInterval() 함수는

setInterval(실행하고자하는 함수명, 시간) <--형태로 사용할수있습니다.

그러니 외부에 함수를 구현해놓고 그 해당 함수명만 setInterval 의 첫번째 인자로 넣어주는형태로

사용하신다면 문제가 해결될것으로 보임니다.
와칸다포에버
6년 전
callback 펑션으로 마무리하였습니다 ㅎㅎ
치메즈라
6년 전
고생하셨습니다.
와칸다포에버
6년 전
답변 감사합니다 ㅎ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인