본문

Timer(JavaScript)

반응형

# Timer

주기적으로 임의의 function() 실행되도록 로직을 작성하는데 유용하게 사용


- setTimeout(function(), milliseconds)

- setInterval(function(), milliseconds)

clearInterval(timer id)



# setTimeout(function(), milliseconds)

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

- 두번째 인자의 시간(Milliseconds)이 경과하면 1번째 인자의 함수를 실행

 

sample 01)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">

    $(document).ready(function() {
        ...
     
        setTimeout("timer_test()"3000); // 3000ms(3초) 경과 시, timer_test() 함수 실행
     
        ...
    });
 
    function timer_test() {
        location.href = "http://google.com"// google.com으로 이동
    }
 
</script>
cs


위의 sample 01 setTimeout()의 첫번째 인자로 function을 호출하고 있는데, 재사용이 필요하지 않은 경우라면 sample 02처럼 function 정의 자체를 첫번째 인자 내에 구현할 수 있다. 

 1000ms is 1second


sample 02) sample 01 익명 함수(Anonymous Function)화

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">
 
    $(document).ready(function() {
      
      ...
 
    setTimeout(function() {
        location.href = "http://google.com";
    }, 3000);
     
     ...
     
    }
 
</script>
cs

 sample 02와 같이 함수의 이름없이 간결하게 작성된 함수를 익명 함수(Anonymous Function)라 한다.



# setInterval(function(), milliseconds)

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

- 두번째 인자의 시간(Milliseconds)이 지날때 마다 첫번째 인자의 함수를 실행


sample 03)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
 
    var sum = 0;
    $(document).ready(function() {
        ...
     
    setInterval("interval_test()"5000); // 매 5초가 지날 때마다 timer_test() 함수를 실행
     
        ...
     
    });
 
    function timer_test(){ // 이 함수는 5초마다 실행
        sum += 1// 매 5초마다 숫자 1을 sum 변수에 더함
    }
 
</script>
cs


sample 04) sample 03 익명 함수(Anonymous Function)화

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
 
    var sum = 0;
 
    $(document).ready(function() {
    
        ...
 
    setInterval(function() {
        sum += 1// 매 5초마다 숫자 1을 sum 변수에 더함
    }, 5000); // 5000ms(5초)가 경과하면 함수 실행
 
        ...
        
}); 
 
</script>
cs



# clearInterval(timer id)

- setInterval() 함수를 사용하면 페이지가 바뀌거나 refresh 되기 전까지 한정 함수가 반복 실행됨

- setInterval() 함수의 동작을 멈출때 clearInterval() 함수 사용


setInterval 함수 실행 시, 반드시 return 값 (Timer ID)을 반환값으로 갖고있어야 한다.


sample 05)

1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript">
 
    var timerId = 0;
    $(document).ready(function() {
        timerId = setInterval("interval_test()"5000); 
        
        document.getElementById('stop_timer').onclick = function() {    // 인라인 함수
        clearInterval(timerId);        // timerId 값을 인자로 입력하여 해당 setInterval 종료
        }
    });
    
</script>
cs



example source) 5분동안 10초 간격으로 doSomething 함수 실행 로직

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
...
 
startTimer(5);
 
...
 
 
 
 
var milliSecond_interval = "10000";
 
function startTimer(duration) {
    var timerId = 0;
    
    // 매 10초마다 doSomething() 실행
    timerId = setInterval("doSomething()", milliSecond_interval);
    
    // duration 경과, refresh 함수 종료
    setTimeout("stopDoing(" + timerId + ")"60000 * duration); 
}
 
function doSomething() {
    // TODO
}
 
function stopDoing(timerId) {
    clearInterval(timerId);
}
cs






- 참고 : http://ooz.co.kr/194

반응형

공유

댓글