JavaScript에서 setInterval
과 setTimeout
은 타이머 기반 기능을 제공하여 특정 작업을 일정 시간 간격으로 실행하거나, 일정 시간이 지난 후 한 번 실행하도록 하는 데 사용됩니다. 이 글에서는 setInterval
과 setTimeout
의 사용법, 차이점, 예제, 그리고 실무에서의 활용법을 자세히 다룹니다.
1. setTimeout
과 setInterval
의 기본 개념
1.1 setTimeout
setTimeout
은 지정된 시간이 지난 후에 특정 작업을 한 번 실행하도록 예약합니다.
문법:
let timerId = setTimeout(function, delay, [param1, param2, ...]);
- function: 실행할 함수
- delay: 밀리초 단위의 지연 시간 (1000ms = 1초)
- param1, param2: 함수에 전달할 매개변수 (선택 사항)
예제:
setTimeout(() => {
console.log("1초 후에 실행됩니다.");
}, 1000);
1.2 setInterval
setInterval
은 지정된 시간 간격마다 특정 작업을 반복 실행하도록 예약합니다.
문법:
let intervalId = setInterval(function, delay, [param1, param2, ...]);
예제:
setInterval(() => {
console.log("1초 간격으로 실행됩니다.");
}, 1000);
1.3 clearTimeout
과 clearInterval
예약된 작업을 중지하려면 clearTimeout
또는 clearInterval
을 사용합니다.
예제:
let timeoutId = setTimeout(() => {
console.log("실행되지 않습니다.");
}, 5000);
clearTimeout(timeoutId); // 예약된 작업을 취소
let intervalId = setInterval(() => {
console.log("실행되지 않습니다.");
}, 1000);
clearInterval(intervalId); // 반복 작업 중지
2. setTimeout
과 setInterval
의 차이점
구분 | setTimeout |
setInterval |
---|---|---|
실행 횟수 | 한 번만 실행 | 지정된 간격마다 반복 실행 |
사용 목적 | 일정 시간 후 한 번의 작업 실행 | 일정 시간 간격으로 반복 작업 실행 |
취소 메서드 | clearTimeout |
clearInterval |
3. 실무에서의 다양한 활용 예제
3.1 setTimeout
을 이용한 지연 작업
예제 1: 간단한 지연 출력
console.log("출력 1");
setTimeout(() => {
console.log("출력 2 (2초 후)");
}, 2000);
console.log("출력 3");
출력 결과:
출력 1
출력 3
출력 2 (2초 후)
예제 2: 매개변수 전달
function greet(name) {
console.log(`Hello, ${name}!`);
}
setTimeout(greet, 1000, "Alice");
출력 결과:
Hello, Alice!
3.2 setInterval
을 이용한 주기적 작업
예제 1: 시계 구현
setInterval(() => {
let now = new Date();
console.log(now.toLocaleTimeString());
}, 1000);
출력 결과:
매초 현재 시간이 출력됩니다.
11:00:01
11:00:02
11:00:03
...
예제 2: 상태 업데이트
let counter = 0;
const intervalId = setInterval(() => {
console.log(`Count: ${counter}`);
counter++;
if (counter > 5) {
clearInterval(intervalId); // 5번 실행 후 중지
}
}, 1000);
출력 결과:
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
3.3 setTimeout
으로 setInterval
과 같은 동작 구현
예제:
function repeatTask() {
console.log("1초마다 실행됩니다.");
setTimeout(repeatTask, 1000); // 재귀 호출로 반복
}
repeatTask();
3.4 setInterval
로 애니메이션 효과 구현
예제: 로딩 애니메이션
const spinner = ["|", "/", "-", "\\"];
let index = 0;
setInterval(() => {
process.stdout.write(`\r${spinner[index]}`);
index = (index + 1) % spinner.length;
}, 200);
3.5 clearTimeout
과 clearInterval
활용
예제: 10초 후 자동 종료
let count = 0;
const intervalId = setInterval(() => {
console.log(`Interval 실행: ${count}`);
count++;
}, 1000);
setTimeout(() => {
clearInterval(intervalId);
console.log("Interval 중지");
}, 10000); // 10초 후 중지
4. setTimeout
과 setInterval
사용 시 주의 사항
4.1 정확성 문제
setInterval
은 지정된 시간이 지나도 이전 작업이 완료되지 않으면 간격이 겹칠 수 있습니다. 이를 방지하려면 setTimeout
으로 반복 작업을 구현하는 것이 더 적합합니다.
예제:
function repeatTask() {
setTimeout(() => {
console.log("작업 실행");
repeatTask(); // 다음 작업 예약
}, 1000);
}
repeatTask();
4.2 메모리 누수 방지
setTimeout
과 setInterval
은 메모리를 차지하므로, 필요하지 않을 때는 clearTimeout
또는 clearInterval
로 중지해야 합니다.
5. 실제 프로젝트에서의 응용
5.1 실시간 채팅 알림
function checkNewMessages() {
console.log("새 메시지를 확인합니다...");
}
setInterval(checkNewMessages, 5000); // 5초마다 메시지 확인
5.2 비동기 작업과 타이머 조합
function fetchData() {
setTimeout(() => {
console.log("데이터 로드 완료");
}, 3000);
}
console.log("데이터 로드를 시작합니다...");
fetchData();
5.3 동적 UI 업데이트
예제: 프로그래스 바
let progress = 0;
const progressBar = setInterval(() => {
progress += 10;
console.log(`진행률: ${progress}%`);
if (progress >= 100) {
clearInterval(progressBar);
console.log("완료되었습니다!");
}
}, 1000);
6. 결론
setTimeout
과 setInterval
은 JavaScript에서 지연 작업과 반복 작업을 구현할 때 매우 유용합니다. 이 글에서는 기본 사용법부터 실무에서 활용할 수 있는 다양한 예제까지 다뤘습니다. 프로젝트에서 효율적으로 활용하여 타이밍 기반의 작업을 구현해 보세요!
'개발 > Javascript' 카테고리의 다른 글
JavaScript로 동적 테이블 생성: rowspan, colspan 구현 가이드 (1) | 2025.01.22 |
---|---|
jQuery에서 filter, findIndex, map 활용하기: 다양한 예제와 실전 가이드 (1) | 2025.01.22 |
다양한 차트 라이브러리를 활용한 차트 구현 예제 (1) | 2025.01.20 |
FusionCharts로 다양한 차트 그리기: 예제와 상세 설명 (0) | 2025.01.20 |
jQuery로 차트 그리기: 다양한 차트 유형과 예제 (0) | 2025.01.20 |