๐ŸŒ€ 5. debounce vs throttle โ€” ์Šคํฌ๋กค ์ด๋ฒคํŠธ ์ตœ์ ํ™”ํ•  ๋•Œ ํ•ญ์ƒ ํ—ท๊ฐˆ๋ ค์„œ ์ •๋ฆฌํ•ด๋ดค๋‹ค

JM_Devยท2025๋…„ 4์›” 18์ผ
1
post-thumbnail

React์—์„œ ๊ฒ€์ƒ‰ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜,
์Šคํฌ๋กค ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•ด์„œ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด debounce์™€ throttle์„ ๊ผญ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค.
๋ง‰์ƒ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜๋ฉด "๋‘˜ ์ค‘ ๋ญ๊ฐ€ ๋ญ์˜€๋”๋ผ?" ํ•˜๊ฒŒ ๋ผ์„œ ์ •๋ฆฌํ•ด๋ดค๋‹ค.


โœ… debounce๋ž€?

๋งˆ์ง€๋ง‰ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜์•ผ ์‹คํ–‰

์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ์„ ๋ฉˆ์ถ”๊ณ  ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜์•ผ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
์ฃผ๋กœ ๊ฒ€์ƒ‰์ฐฝ ์ž๋™์™„์„ฑ ๊ฐ™์€ ๋ฐ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

function debounce(fn, delay) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}

โœ… throttle์ด๋ž€?

์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๊ฒŒ ์ œํ•œ

์Šคํฌ๋กค์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ๊ฐ€ ์งง์€ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ,
๋„ˆ๋ฌด ๋งŽ์€ ํ˜ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ • ์‹œ๊ฐ„ ๋‹จ์œ„๋กœ ๋Š์–ด์„œ ์‹คํ–‰ํ•œ๋‹ค.

function throttle(fn, limit) {
  let inThrottle;
  return (...args) => {
    if (!inThrottle) {
      fn(...args);
      inThrottle = true;
      setTimeout(() => (inThrottle = false), limit);
    }
  };
}

โœ… ์ •๋ฆฌ ๋น„๊ต

๊ตฌ๋ถ„debouncethrottle
์‹คํ–‰ ์‹œ์ ๋งˆ์ง€๋ง‰ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ํ›„ ์ผ์ • ์‹œ๊ฐ„ ๋’ค์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ํ•œ ๋ฒˆ์”ฉ
์‚ฌ์šฉ ์˜ˆ์‹œ๊ฒ€์ƒ‰์ฐฝ ์ž…๋ ฅ, ์ฐฝ ํฌ๊ธฐ ์กฐ์ ˆ ๋“ฑ์Šคํฌ๋กค ์ด๋ฒคํŠธ, ๋“œ๋ž˜๊ทธ, resize ๋“ฑ
ํŠน์ง•์ด๋ฒคํŠธ๊ฐ€ ๋๋‚œ ํ›„ ์‹คํ–‰๋จ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋จ

๐Ÿ“ ๋‚ด๊ฐ€ ๋А๋‚€ ์ 

๊ฐœ๋…๋งŒ ๋ณด๋ฉด ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ,
"์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ์„ ๋ฉˆ์ท„์„ ๋•Œ" ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—” debounce,
"๊ณ„์† ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ œํ•œํ•˜๊ณ  ์‹ถ์„ ๋•Œ" throttle์„ ์จ์•ผ ํ•œ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ๋ถ„๋ช…ํ•ด์กŒ๋‹ค.

์ด์ œ ๋ฌดํ•œ์Šคํฌ๋กค ๋งŒ๋“ค ๋•Œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š์„ ์ž์‹ ์ด ์ƒ๊ฒผ๋‹ค ๐Ÿ˜Ž


๐ŸŽฏ "์ž…๋ ฅ์€ debounce, ์ด๋ฒคํŠธ๋Š” throttle!"

profile
๊ฐœ๋ฐœ์ž๋กœ ์ทจ์—…์„ ์ค€๋น„ ์ค‘ ์ด๋ฉฐ, ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ์ค‘ ์ž…๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€