setInterval 자바 질문

setInterval 자바 질문

QA

setInterval 자바 질문

본문


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 내부에서 코드를 넣으면 외부에 접근을 못하고 외부에서 실행시키면 병렬실행이 돼서 난감하네요.

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

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

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 123,830 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT