자바스크립트를 timeout 을 써서 무한으로 돌리고 있는데 스탑시킬수 있을까요?

자바스크립트를 timeout 을 써서 무한으로 돌리고 있는데 스탑시킬수 있을까요?

QA

자바스크립트를 timeout 을 써서 무한으로 돌리고 있는데 스탑시킬수 있을까요?

본문


function go1(){ setTimeout('go2()', 1000); }
function go2(){ setTimeout('go3()', 1000); }
function go3(){ setTimeout('go1()', 1000); }

 

이런식으로 go1(); 실행시 1 2 3 스크립트가 1초 간격으로 실행되도록 코딩했는데요

그냥 놔두면 무한으로 실행되서 stop(); 실행 시 위 스크립트를 멈추고 싶습니다.

 

검색해보니 clearTimeout(); 이란게 있어서

 


function stop(){
 var timer1 = setTimeout('go1()', 1000); 
 var timer2 = setTimeout('go2()', 1000); 
 var timer3 = setTimeout('go3()', 1000);  
 clearTimeout(timer1);
 clearTimeout(timer2);
 clearTimeout(timer3);  
}

 

이런식으로 짜봤는데 stop(); 을 해도 스크립트가 멈추질 않습니다.

특정 스크립트를 즉시 중지할수 있는 방법이 있나요? 

이 질문에 댓글 쓰기 :

답변 1

settimout 은 한번만 실행한다는 스킬아닌가요?

 

setinterval 을 사용하고 필요에 의해 clear 해서 쓰시는게 맞을 듯 합니다만.....

 

 

 

1) setTimeout([Function], [Milliseconds])

 

 - 특정 시간 이 후, 단 한번만 특정 함수 또는 코드를 실행시킬 때 사용합니다.

 - 2번째 인자의 시간(Milliseconds)이 경과하면 1번째 인자의 함수를 실행합니다.

 

2) setInterval([Function], [Milliseconds])

 

 - 특정 시간 마다 특정 함수 또는 코드를 실행시킬 때 사용합니다.

 - 2번째 인자의 시간(Milliseconds)이 지날때마다 1번째 인자의 함수를 실행합니다.

 

 

3) clearInterval([Timer Id])  

 

네 원래 1회성인데 위 스크립트처럼 계속 맞물리고 맞물려서 무한으로
실행되고 있어요.

현재는 if 로 선택지를 둬서 input value 에 1이면 플레이 2면 멈춤으로
컨트롤 하고 있는데요.

혹시나 특정 스크립트를 그냥 무조건 스탑 시키는 스크립트가 있는지 해서요..

function go1(){ setTimeout('go2()', 1000); }

function go2(){ setTimeout('go3()', 1000); }

function go3(){ setTimeout('go1()', 1000); }

1회성이라고 하시면 위의 코드중에 go3 이 실행을 왜 하는건가요?

go3이 go1을 다시 실행하는 코드가 되버리니까 무한루프에 들어가게 되는거 같은데요....

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

회원로그인

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