setInterval 자바 질문 채택완료
</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 의 첫번째 인자로 넣어주는형태로
사용하신다면 문제가 해결될것으로 보임니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
채택
답변대기
답변대기
답변대기
답변대기
채택
채택
답변대기
답변대기
답변대기
채택