October 13, 2021
일정 시간이 지난 후에 원하는 함수를 예약 실행(호출)할 수 있게 하는 것을 '호출 스케줄링(scheduling a call)'이라고 합니다.
호출 스케줄링을 구현하는 방법은 두 가지가 있습니다.
setTimeout을 이용해 일정 시간이 지난 후에 함수를 실행하는 방법setInterval을 이용해 일정 시간 간격을 두고 함수를 실행하는 방법자바스크립트 명세서엔 setTimeout과 setInterval가 명시되어있지 않습니다. 하지만 시중에 나와 있는 모든 브라우저, Node.js를 포함한 자바스크립트 호스트 환경 대부분이 이와 유사한 메서드와 내부 스케줄러를 지원합니다.
예시를 통해 setTimeout을 어떻게 쓸 수 있는지 알아봅시다. 아래 코드를 실행하면 1초 후에 sayHi()가 호출됩니다.
function sayHi() {
alert('안녕하세요.');
}
*setTimeout(sayHi, 1000);*
아래와 같이 함수에 인수를 넘겨줄 수도 있습니다.
function sayHi(who, phrase) {
alert( who + ' 님, ' + phrase );
}
*setTimeout(sayHi, 1000, "홍길동", "안녕하세요."); // 홍길동 님, 안녕하세요.*
setTimeout의 첫 번째 인수가 문자열이면 자바스크립트는 이 문자열을 이용해 함수를 만듭니다.

setInterval 메서드는 setTimeout과 동일한 문법을 사용합니다.
let timerId = setInterval(func|code, [delay], [arg1], [arg2], ...)
인수 역시 동일합니다. 다만, setTimeout이 함수를 단 한 번만 실행하는 것과 달리 setInterval은 함수를 주기적으로 실행하게 만듭니다.
함수 호출을 중단하려면 clearInterval(timerId)을 사용하면 됩니다.