타이머 함수를 사용하여 명시적으로 호출하지 않고, 일정 시간이 지난 이후 또는 반복적으로 호출되도록 "함수 호출을 예약"하는 것 을 "호출 스케쥴링"이라고 합니다.
setTimeout "첫 번째 인수인 콜백 함수"는 "두 번째 인수로 전달받은 시간이 경과 한 이후" "실행 되도록 호출 스케줄링된다.
setTimeout 함수는 생성된 타이머를 식별할 수 있는 고유한 타이머를 "식별할 수 있는 고유한 id를 반환"한다.
setTimeout 함수가 반환한 타이머 id는 ① 브라우저 환경일 경우 "숫자"이며 ② Node.js 환경인 경우 "객체"다
setTimeout 함수가 반환한 타이머 id를 clearTimeout 함수의 인수로 전달하여 타이머를 취소할 수 있다.
setTimeout 함수로 생성한 타이머는 한 번 동작합니다.
// 1초(1000ms) 후 타이머가 만료되면 콜백 함수가 호출된다.
setTimeout(() => console.log("Hi!"), 1000);
// 세 번째 인수로 문자열 'Lee' 인수로 전달
setTimeout((name) => console.log(`Hi! ${name}.`), 1000, "Lee");
// 두 번째 인수(delay)를 생략하면 기본값 0이 지정된다.
setTimeout(() => console.log("Hello!"));
//setTimeout 함수가 반환한 타이머 id를 clearTimeout 함수의 인수로 전달하여 타이머를 취소할 수 있다.
const timerId = setTimeout(() => console.log("Hi!"), 1000);
clearTimeout(timerId);
setInterval의 "첫 번째 인수인 콜백 함수"는 "두 번째 인수로 전달받은 시간이 경과할 때마다" "반복 실행"되도록 호출 스케줄링된다.
setInterval의 함수는 생성된 타이머를 식별할 수 있는 고유한 타이머를 "식별할 수 있는 고유한 id를 반환"한다.
setInterval의 함수가 반환한 타이머 id는 ① 브라우저 환경일 경우 "숫자"이며 ② Node.js 환경인 경우 "객체"다
setInterval 함수로 생성한 타이머는 반복적으로 동작합니다.
let count = 1;
const timeoutId = setInterval(() => {
console.log(count); // 1 2 3 4 5
if (count++ === 5) clearInterval(timeoutId);
}, 1000);
console.log("timeoutId: ", timeoutId);