Timeouts execute some code after a specified amount of time.
Intervals execute code repeatedly, waiting a specific amount of time in between each execution.
Timeout
Timeout 은 window 의 setTimeout() Method 로 설정한다.
첫번째 매개변수는 Code를 나타내는 문자열도 가능하고 Method 도 가능하다.
//avoid!
setTimeout(“alert(‘Hello world!’) “, 1000);
//preferred
setTimeout(function() {
alert(“Hello world!”);
}, 1000);
첫번째 구문은 성능을 저하시키므로 피할 것.
setTimeout()을 호출하면 해당 타임아웃의 숫자형 ID 를 반환한다.
타임아웃 ID 는 코드의 고유식별자이며 타임아웃을 취소할때 사용한다.
//set the timeout
var timeoutId = setTimeout(function() {
alert(“Hello world!”);
}, 1000);
//nevermind - cancel it
clearTimeout(timeoutId);
정해진 시간이 되기전에 clearTimeout()을 호출하기만 하면 타임아웃은 완전히 취소된다.
코드가 실행된 후에는 호출해도 아무 효과가 없다.
Interval
setInterval() 역시 IntervalID를 반환하며 후에 clearInterval()을 사용하여 Interval 을 취소할 때 사용한다.
Interval()은 취소하지 않으면 페이지가 떠 있는동안 계속 실행되므로 Interval 의 취소는 Timeout 의 취소보다 중요하다.
다음은 일반적인 사용예
var num = 0;
var max = 10;
var intervalId = null;
function incrementNumber() {
num++;
//if the max has been reached, cancel all pending executions
if (num == max) {
clearInterval(intervalId);
alert(”Done”);
}
}
intervalId = setInterval(incrementNumber, 500);
일반적으로 Interval()은 쓰지않는 편이 낫다.
var num = 0;
var max = 10;
function incrementNumber() {
num++;
//if the max has not been reached, set another timeout
if (num < max) {
setTimeout(incrementNumber, 500);
} else {
alert(“Done”);
}
}
setTimeout(incrementNumber, 500);
이런 식으로 Timeout을 사용할 때는 다른 타임아웃이 필요할 때만 설정되므로 취소를 위해 timeoutID 를 추적할 필요가 없다. 사실 이 패턴은 Interval 없이 Interval 을 설정하는 모범사례.
Interval 사이의 시간을 정확히 보장하기 어렵고 이따금 일부 Interval을 건너뛰기도 하므로 실무에서는 Interval 을 잘 쓰지 않는다. 위 예제 처럼 Timeout 을 설정하면 그런 일은 발생하지 않는다.
-- 도서 "JavaScript for Web Developers" 를 정리
행복한 고수되십시요.
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'Web > JavaScript' 카테고리의 다른 글
[JavaScript] WebPack (0) | 2017.10.09 |
---|---|
[JavaScript] SystemJS (0) | 2017.10.08 |
[JavaScript] Markup Insertion (0) | 2017.02.10 |
[JavaScript] Pop Up 차단 확인 (0) | 2017.01.26 |
[JavaScript] Browser 탐지 스크립트 (0) | 2017.01.26 |