호출 스케줄링

fe_sw·2022년 12월 19일
0

타이머 함수를 사용하여 명시적으로 호출하지 않고, 일정 시간이 지난 이후 또는 반복적으로 호출되도록 "함수 호출을 예약"하는 것 을 "호출 스케쥴링"이라고 합니다.

setTimeout/ clearTimeout

  • 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/ clearInterval

  • setInterval의 "첫 번째 인수인 콜백 함수"는 "두 번째 인수로 전달받은 시간이 경과할 때마다" "반복 실행"되도록 호출 스케줄링된다.

  • setInterval의 함수는 생성된 타이머를 식별할 수 있는 고유한 타이머를 "식별할 수 있는 고유한 id를 반환"한다.

  • setInterval의 함수가 반환한 타이머 id는 ① 브라우저 환경일 경우 "숫자"이며 ② Node.js 환경인 경우 "객체"다

    • setTimeout 함수가 반환한 타이머 id를 clearInterval 함수의 인수로 전달하여 타이머를 취소할 수 있다.
  • 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);

0개의 댓글