쓰로틀링(throttling)과 디바운싱(debouncing)

2022. 6. 6. 22:42·React/JavaScript

디바운싱(debouncing)

새로운 이벤트가 호출 되었을 때, timer가 동작 중이라면 제거하고 새롭게 추가하는 방식이다.

검색어를 검색 창에 입력할 때, 실시간으로 결과가 호출되게 하는 경우 모든 입력이 끝났을 경우에만 API를 호출하는 스킬이다.

네트워크 비용을 크게 절약하고 효율적으로 프로그램이 동작할 수 있다.

let timer = null;
inputText.onkeydonw = (event) => {
	if(timer) //이전에 이벤트가 발생했다면
    	clearTimeout(timer); //이전 이벤트를 지운다.
   	if(event.target.value){
    	timer = setTimeout(() => {
        //추천 검색어 API 호출
        }, 200);
    }
}

 

 

쓰로틀링(throttling)

마지막 함수가 호출된 후 일정 시간이 지나기 전에 다시 호출되지 않도록 하는 스킬이다.

스크롤 시, 요청 버튼을 클릭한 경우 주로 사용하며 중복 요청이 발생하지 않도록 한다.

let timer = null;
body.onscroll = (event) => {
	if(!timer){
    	timer = setTimeout(() => {
        	timer = null;
            //data load
        }, 200);
    }
}
저작자표시 비영리 변경금지 (새창열림)

'React > JavaScript' 카테고리의 다른 글

[JavaScript] 비동기 처리  (0) 2022.06.06
[JavaScript] This 포인터 이해하기  (0) 2022.06.02
[JavaScript] 호이스팅과 클로저  (2) 2022.05.06
[JavaScript] 실행 Context와 Scope  (0) 2022.05.06
[JavaScript] 자바스크립트의 구성  (0) 2022.05.04
'React/JavaScript' 카테고리의 다른 글
  • [JavaScript] 비동기 처리
  • [JavaScript] This 포인터 이해하기
  • [JavaScript] 호이스팅과 클로저
  • [JavaScript] 실행 Context와 Scope
박유상의 개발블로그
박유상의 개발블로그
개발블로그
  • 박유상의 개발블로그
    박유상의 개발블로그
    박유상의 개발블로그
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    탐욕법
    링고리
    Lingory
    리액트
    포트폴리오
    useTranslation
    웹
    프로그래머스
    Python
    Flutter
    알고리즘
    자바스크립트
    플러터
    map
    useRef
    react
    CSS
    DP
    github
    JSON
    useState
    flutter web
    TypeScript
    플러터 웹
    파이썬
    HTML
    Redux
    DART
    Firebase
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박유상의 개발블로그
쓰로틀링(throttling)과 디바운싱(debouncing)
상단으로

티스토리툴바