setInterval 자바 질문

setInterval 자바 질문

QA

setInterval 자바 질문

답변 1

본문


function test() {
var count = 5;
setInterval(function() {
count--;
 
if (count == 0) {
return true;
}
 
return false;
}, 1000);
 
console.log('1');
}

 

라고 소스를 짰는데 test(); 호출하니까 console.log('1');이 찍혀버리네요..;?

 

if 문으로 count 0이면 return true돼서 console.log 부분으로 가게 한건데

 

test(); 함수 호출하자마자 콘솔찍히네요.. 뭐죠?

이 질문에 댓글 쓰기 :

답변 1

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

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

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

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

 

setInterval 사용시 setInterval(function() { 형태로 사용하는것은 함수자체를 외부에 구현해놓지않고

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

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

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

사용하신다면 문제가 해결될것으로 보임니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 9
© SIRSOFT
현재 페이지 제일 처음으로