Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 일정 시간 후 또는 여러 번 실행 후 setInterval()을 중지하는 방법

setInterval()은 지정한 시간 간격마다 함수를 반복적으로 실행하는 JavaScript 타이머 함수입니다. 하지만 실무에서는 무한히 반복되는 것이 아니라 일정 시간이 지난 후 또는 정해진 작업 횟수를 채운 후 반복을 멈춰야 하는 경우가 많습니다. 이럴 때는 조건문과 clearInterval()을 함께 사용하면 됩니다.

핵심 원리: clearInterval()과 조건문

setInterval()이 반환하는 고유 ID를 변수에 저장해 두면, 원하는 조건이 충족되는 시점에 clearInterval()에 그 ID를 전달하여 타이머를 중지할 수 있습니다. 아래 예제는 시작 시점의 시간을 기록해 둔 뒤, 30초(반 분)가 경과하면 자동으로 반복 실행을 멈춥니다.

예제 코드

<!DOCTYPE html>
<html lang="ko">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<body>
<script>
   var now = new Date().getTime();
   var interval = setInterval(function () {
      if (new Date().getTime() - now > 30000) {
         clearInterval(interval);
         return;
      }
      console.log("working");
   }, 2000);
</script>
</html>

코드 동작 방식

  • new Date().getTime()으로 프로그램 시작 시점의 타임스탬프를 now 변수에 저장합니다.
  • setInterval()은 2000밀리초(2초)마다 콜백 함수를 실행하며, 실행될 때마다 현재 시간과 시작 시간의 차이를 계산합니다.
  • 경과 시간이 30000밀리초(30초)를 초과하면 clearInterval(interval)로 타이머를 중지하고 return으로 함수 실행을 종료합니다.
  • 조건이 충족되지 않는 동안에는 콘솔에 "working"이라는 메시지를 출력합니다.

실행 방법

위 프로그램을 실행하려면 파일 이름을 anyName.html(또는 index.html)로 저장한 뒤, 해당 파일에서 마우스 오른쪽 버튼을 클릭하세요. VS Code 편집기에서 "Open with Live Server" 옵션을 선택하면 브라우저에서 바로 결과를 확인할 수 있습니다.

실행 결과

프로그램을 실행하면 2초마다 콘솔에 "working"이 출력되다가, 30초가 지나면 다음과 같이 반복이 자동으로 중지됩니다.

JavaScript에서 일정 시간 후 또는 여러 번 실행 후 setInterval()을 중지하는 방법

응용: 정해진 횟수만큼만 실행하기

시간 대신 실행 횟수를 기준으로 중지하고 싶다면 카운터 변수를 활용하면 됩니다. 아래 코드는 2초 간격으로 10번 실행된 후 자동으로 멈춥니다.

let count = 0;
const interval = setInterval(() => {
  count++;
  console.log("working", count);
  if (count >= 10) {
    clearInterval(interval);
  }
}, 2000);

이처럼 시간 기반 조건이든 횟수 기반 조건이든, clearInterval()을 적절한 시점에 호출하는 것이 setInterval() 반복을 안전하게 종료하는 핵심입니다.