함수를 명시적으로 호출하지 않고 일정 시간이 경과된 이후에 호출되도록 함수 호출을 예약하려면 타이머 함수를 사용한다. 이를 호출 스케줄링이라 한다.
자바스크립트는 타이머를 생성할 수 있는 타이머 함수 setTimeout과 setInterval
타이머를 제거할 수 있는 타이머 함수 clearTimeout과 clearInterval을 제공한다.
setTimeout 함수가 생성한 타이머는 단 한 번 동작하고, setInterval 함수가 생성한 타이머는 반복 동작한다. 즉, setTimeout 함수의 콜백 함수는 타이머가 만료되면 단 한 번 호출되고 , setInterval 함수의 콜백 함수는 타이머가 만료될 때마다 반복 호출된다.
<aside> 💡 오잉? 콜백 함수가 뭐지? → 간단하게 말하자면, 함수 안에서 실행되는 또 다른 함수이다. 또 다른 함수를 만들 때 인풋을 함수로 받아서 사용할 수 있는데, 이때 인자로 사용되는 함수를 말한다.
</aside>
자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖기 때문에 두 가지 이상의 태스크를 동시에 실행할 수 없다. 즉, 자바스크립트 엔진은 싱글 스레드로 동작한다. 이런 이유로 타이머 함수 setTimeout과 setInterval은 비동기 처리방식으로 동작한다.