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)
을 사용하면 됩니다.