2023. 3. 26. 12:11ㆍjs
41.1 호출 스케줄링.
함수를 명시적으로 호출하면 함수가 즉시 실행된다.
만약 함수를 명시적으로 호출 하지 않고 일정 시간이 경과된 잏에 호출 되도록
함수 호출을 예약하려면 타이머 함수를 사용한다.
in javascript setTimeout 과 setInterval 타이머를 제거할 수 있는
clearTimeout과 clearInterval함수를 제공한다.
타이머 함수는 호스트 객체다.
# 다시보기) 호스트 객체 -> 실행 환경에서 제공하는 객체.
setTimeout 함수가 생성한 타이머는 한번만 동작하고,
setInterval 함수의 콜백함수는 타이머가 만료될 때 마다 반복 호출 된다.
자바스크립트 엔진은 하나의 실행 컨텍스트 스택을 갖기 때문에 두개 이상의 태스크를
동시에 실행 할 수 없고, setTimeout 과 setInterval은 비동기 처리방식으로
동작한다.
41.2 타이머 함수
41.2.1 setTimeout / clearTimeout
setTimeout의 경우 단한번 동작하는 타이머를 생성하고
만료되면 첫 번째 인수로 전달받은 콜백함수가 호출된다.
setTimeout의 반환형은 nodeId이고 이를 가지고
clearTimeout을 사용할 수 있다.
41.2.2 setInterval / clearInterval
setInterval 함수는 두 번째 인수로 전달받은 시간으로 반복 동작하는 타이머를 생성한다.
인수는 setTimeout의 인수와 동일하고 리턴값 또한 동일하다.
이를 통해서 호출 스케줄링을 취소 할 수 있다.
41.3 디바운스와 스로틀
디바운스와 스로틀은 짧은 시간 간격으로 연속해서 발생하는 이벤트를 그룹화해서 과도한 이벤트
핸들러의 호출을 방지하는 프로그래밍 기법이다.
41.3.1 디바운스
디바운스는 짧은 시간 간격으로 이벤트가 연속해서 발생하면 이벤트 핸들러를
호출하지 않다가 일정 시간이 경과한 이후에 이벤트 핸들러가 한 번만 호출되도록 한다.
짧은 시간 간격으로 발생하는 이벤트를 그룹화 해서 마지막에 한번만 호출되도록 한다.
위와 같은 기술을 이용해서 사용자 인풋과 같은 경우 무거운 작업을 한번만 하도록
하여서 동작의 가격을 줄일 수 있다.

41.3.2 스로틀
스로틀은 짧은 시간 간격으로 이벤트가 연속해서 발생하더라도 일정 시간 간격으로 이벤트가
최대 한번만 호출되도록 한다.
무한 스크롤 과 같은 구현에서 사용할 수 있다 .

'js' 카테고리의 다른 글
43 ajax (0) | 2023.03.28 |
---|---|
42장 비동기 처리 (0) | 2023.03.27 |
자바스크립트 이벤트 정리 (0) | 2023.03.08 |
Dom (2) | 2023.02.21 |
브라우저 렌더링2 (0) | 2023.02.01 |