October 13, 2021

일정 시간이 지난 후에 원하는 함수를 예약 실행(호출)할 수 있게 하는 것을 '호출 스케줄링(scheduling a call)'이라고 합니다.

호출 스케줄링을 구현하는 방법은 두 가지가 있습니다.

자바스크립트 명세서엔 setTimeout과 setInterval가 명시되어있지 않습니다. 하지만 시중에 나와 있는 모든 브라우저, Node.js를 포함한 자바스크립트 호스트 환경 대부분이 이와 유사한 메서드와 내부 스케줄러를 지원합니다.

예시를 통해 setTimeout을 어떻게 쓸 수 있는지 알아봅시다. 아래 코드를 실행하면 1초 후에 sayHi()가 호출됩니다.

function sayHi() {
  alert('안녕하세요.');
}

*setTimeout(sayHi, 1000);*

아래와 같이 함수에 인수를 넘겨줄 수도 있습니다.

function sayHi(who, phrase) {
  alert( who + ' 님, ' + phrase );
}

*setTimeout(sayHi, 1000, "홍길동", "안녕하세요."); // 홍길동 님, 안녕하세요.*

setTimeout의 첫 번째 인수가 문자열이면 자바스크립트는 이 문자열을 이용해 함수를 만듭니다.

Untitled

setInterval

setInterval 메서드는 setTimeout과 동일한 문법을 사용합니다.

let timerId = setInterval(func|code, [delay], [arg1], [arg2], ...)

인수 역시 동일합니다. 다만, setTimeout이 함수를 단 한 번만 실행하는 것과 달리 setInterval은 함수를 주기적으로 실행하게 만듭니다.

함수 호출을 중단하려면 clearInterval(timerId)을 사용하면 됩니다.