본문 바로가기

JAVASCRIPT

JAVASCRIPT ) setInterval / setTimeout

setInterval() ==> 주기적인 스케줄링
clearInterval
    
setTimeout() ==> 단발성 스케줄링
clearTimeout

 

0

 

 

<!DOCTYPE html>
<html>
<style>
	* {margin: 0; padding: 0;}
    .numberArea {
    	width: 100px; height: 100px; font-size: 30px;
        border-radius: 50%; line-height: 100px; text-align: center;
        background-color: orange; color: white;
    }
    button {width: 100px; height: 40px; border: 1px solid gray; margin-top: 10px;}
</style>
<div id="numberArea" class="numberArea">0</div>
<button id="startBtn">START</button>
<button id="stopBtn">STOP</button>
    
<script>
    let toggleBtn= null;	//Handler 핸들러
    
    function increaseNumber(){
    	let numberArea = Number(document.getElementById('numberArea').innerHTML);
        numberArea++;
        document.getElementById('numberArea').innerHTML = String(numberArea);
    }
    
    document.querySelector('#startBtn').onclick = function(){
    	toggleBtn = setInterval( increaseNumber , 1000 );
        
        //아래 코드를 안넣으면 START버튼을 반복 클릭했을때 
        //toggleBtn에 setInterval이 반복적으로 담겨서 clearInterval이 안먹는다.
        document.querySelector('#startBtn').setAttribute('disabled', 'true');
        document.querySelector('#stopBtn').removeAttribute('disabled');
    }
            
    document.querySelector('#stopBtn').onclick = function(){
      	clearInterval( toggleBtn );
        document.querySelector('#stopBtn').setAttribute('disabled', 'true');
        document.querySelector('#startBtn').removeAttribute('disabled');
    }
</script>

</html>

 

 

setInterval은 CPU에 문제가 생기기때문에 잘 쓰지않는다.

따라서 아래코드처럼 setTimeout을 setInterval처럼 사용해야한다.

 

<script>
    let myCounter = 0;
    function increseCounter(){
    	document.write(myCounter++);
        intervalFunction();
    }
    function intervalFunction(){
    	setTimeout(increseCounter, 1000);
    }
    intervalFunction();
</script>

 

<script>
    let myCounter = 0;
    function increseCounter(){
    	document.write(myCounter++);
        setTimeout(increseCounter, 1000);
    }
    setTimeout(increseCounter, 1000);
</script>
반응형

'JAVASCRIPT' 카테고리의 다른 글

JAVASCRIPT ) 날짜 시간  (2) 2024.07.16
JAVASCRIPT ) 이벤트  (0) 2024.07.16
JAVASCRIPT ) Element 속성 API  (0) 2024.07.15
JAVASCRIPT ) DOM 제어대상 선택자  (0) 2024.07.15
JAVASCRIPT ) 자바스크립트로 스타일 주기  (0) 2024.07.15