์ผํ๋ชฐ ๊ฒ์์ฐฝ์ '์์ ๊ฑฐ'๋ฅผ ๊ฒ์ํ๋ ค๊ณ 'ใ
...ใ
...ใ
...'๋ฅผ ์
๋ ฅํ ๋๋ง๋ค
ํ๋ฉด์ด ๊น๋นก๊ฑฐ๋ฆฌ๊ฑฐ๋, ๊ตฌ๋งค ๋ฒํผ์ ์ค์๋ก ๋ค๋ค๋ฅ ๋๋ ๋๋ฐ ๊ฒฐ์ ๊ฐ ๋ ๋ฒ ๋
๊ฒฝํ, ์์ผ์ ๊ฐ์?
์ฐ๋ฆฌ๋ ๋ฌด์ฌ์ฝ ํค๋ณด๋์ ๋ง์ฐ์ค๋ฅผ ๋น ๋ฅด๊ฒ ์กฐ์ํ์ง๋ง, ์ปดํจํฐ ์
์ฅ์์๋
0.1์ด๋ง๋ค ์์์ง๋ ๋ช
๋ น์ ์ ๋ถ ์ฒ๋ฆฌํ๋๋ผ '๊ณผ๋ถํ'๊ฐ ๊ฑธ๋ฆฌ๊ณค ํฉ๋๋ค.
๐ก ํต์ฌ ๋ฌธ์ :
"์ฌ์ฉ์๊ฐ 1์ด์ 10๋ฒ ํด๋ฆญํ๋ค๊ณ , ์๋ฒ์๋ 10๋ฒ ์์ฒญ์ ๋ณด๋ด์ผ ํ ๊น์?"
์ด ๋นํจ์จ์ ๋ง๊ธฐ ์ํด ๊ฐ๋ฐ์๋ค์ ๋๋ฐ์ด์ค(Debounce)์
์ค๋กํ(Throttle)์ด๋ผ๋ ๊ตํต์ ๋ฆฌ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
์ค๋์ ์ด ๋ ๊ฐ์ง ๊ธฐ์ ์ด ์ด๋ป๊ฒ ์ฐ๋ฆฌ์ ์น ์ํ ์๋๋ฅผ ์ง์ผ์ฃผ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์๋ค์ ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง(React/Vue) ์์ฃผ ์ฝ๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ช 1. ์๋ฆฌ๋ฒ ์ดํฐ์ ์งํ: ๋๋ฐ์ด์ค (Debounce)
๋๋ฐ์ด์ค(Debounce)๋ "๋ง์ง๋ง ํ๋์ด ๋๋ ๋๊น์ง
๊ธฐ๋ค๋ ค์ฃผ๋ ๊ธฐ์ "์
๋๋ค.
๊ฐ์ฅ ์ฌ์ด ์๋ก ์๋ฆฌ๋ฒ ์ดํฐ ๋ฌธ์ ์๊ฐํด๋ณด์ธ์.
- ๐ ์ํฉ: ์๋ฆฌ๋ฒ ์ดํฐ ๋ฌธ์ด ๋ซํ๋ ค๊ณ ํ๋๋ฐ ์ ๋ฉ๋ฆฌ์ ์ฌ๋์ด ๋ฌ๋ ค์ต๋๋ค.
- ๐ ํ๋: '์ด๋ฆผ' ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฌธ์ด ๋ค์ ์ด๋ฆฌ๊ณ ๋ซํ๋ ์๊ฐ์ด ์ด๊ธฐํ๋ฉ๋๋ค.
- ⏳ ๊ฒฐ๊ณผ: ๋ง์ง๋ง์ผ๋ก ํ์นํ ์ฌ๋์ด ๋ค์ด์ค๊ณ ๋์, ์ผ์ ์๊ฐ์ด ์ง๋์ผ ๋น๋ก์ ๋ฌธ์ด ๋ซํ๊ณ ์ถ๋ฐํฉ๋๋ค.
์น์ฌ์ดํธ์ ๊ฒ์์ฐฝ์ด ๋ฐ๋ก ์ด ์๋ฆฌ์
๋๋ค.
์ฌ๋ฌ๋ถ์ด '์์ ๊ฑฐ'๋ฅผ ์น ๋ 'ใ
', '์', '์ฉ'.. ์
๋ ฅํ ๋๋ง๋ค ๊ฒ์ํ๋ ๊ฒ
์๋๋ผ, ์
๋ ฅ์ด ๋ฑ ๋ฉ์ถ๋ ์๊ฐ(๋ง์ง๋ง ํ์)์ ํ ๋ฒ๋ง ๊ฒ์์ ์ํํฉ๋๋ค.
๋๋ถ์ ๋ฐ์ดํฐ ๋ญ๋น๋ฅผ ๋ง์ ์ ์์ฃ .
๐ 2. ์ ํด์ง ์๊ฐ์๋ง ์ถ๋ฐ: ์ค๋กํ (Throttle)
์ค๋กํ(Throttle)์ "์๋ฌด๋ฆฌ ์์ฒญ์ด ๋ง์๋ ์ ํด์ง ์๊ฐ
๊ฐ๊ฒฉ์ผ๋ก๋ง ์คํํ๋ ๊ธฐ์ "์
๋๋ค.
์ด๋ฒ์๋ ์งํ์ฒ ์ ๋ ์ฌ๋ ค๋ณด์ธ์.
์น๊ฐ์ด ์๋ฌด๋ฆฌ ๋ง์ด ๋ชฐ๋ ค์๋, ์งํ์ฒ ์ ์ ํด์ง ์๊ฐํ(์: 5๋ถ ๊ฐ๊ฒฉ)์
๋ง์ถฐ์๋ง ์ถ๋ฐํฉ๋๋ค.
์ค๊ฐ์ ์น๊ฐ์ด ๋ ํ๋ค๊ณ ํด์ ๋ฐ๋ก ์ถ๋ฐํ์ง๋, ๋ฆ๊ฒ ์ถ๋ฐํ์ง๋ ์์ฃ .
์ด ๊ธฐ์ ์ ์คํฌ๋กค ๊ธฐ๋ฅ์ ์ฃผ๋ก ์ฐ์
๋๋ค. ์คํฌ๋กค์ 1์ด์
100๋ฒ ๋ด๋ ค๋, ์ปดํจํฐ๋ 0.1์ด์ ํ ๋ฒ์ฉ๋ง ํ๋ฉด ์์น๋ฅผ ๊ณ์ฐํด์ ๋ฒ๋ฒ
๊ฑฐ๋ฆผ์
๋ฐฉ์งํฉ๋๋ค.
⚖️ 3. ํ๋์ ๋ณด๋ ์ฐจ์ด์
๋ ๊ธฐ์ ๋ชจ๋ "์ปดํจํฐ๋ฅผ ์ฌ๊ฒ ํด์ค๋ค"๋ ์ ์ ๊ฐ์ง๋ง, ์ฌ์ฉ ๋ชฉ์ ์ด ์กฐ๊ธ
๋ค๋ฆ
๋๋ค.
ํท๊ฐ๋ฆฌ์ ๋ค๋ฉด ์๋ ํ๋ง ๊ธฐ์ตํ์๋ฉด ๋ฉ๋๋ค.
| ๊ตฌ๋ถ | ๋๋ฐ์ด์ค (Debounce) | ์ค๋กํ (Throttle) |
|---|---|---|
| ๋น์ | ์๋ฆฌ๋ฒ ์ดํฐ (๊ธฐ๋ค๋ฆผ) | ์งํ์ฒ (์๊ฐํ ์ค์) |
| ํต์ฌ ์๋ฆฌ | ๋ง์ง๋ง ํ๋ ํ ์คํ | ์ผ์ ์๊ฐ๋ง๋ค ์คํ |
| ์ฃผ ์ฌ์ฉ์ฒ | ๊ฒ์์ด ์ ๋ ฅ, ์ฐฝ ํฌ๊ธฐ ์กฐ์ ๋ | ์คํฌ๋กค ๋ด๋ฆฌ๊ธฐ, ๋ง์ฐ์ค ์ด๋ |
์์ ์์๋ React์ 'Hook'์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ต๋๋ค.
Vue.js๋ฅผ ์ฌ์ฉํ์ ๋ค๋ฉด 'Composables'๋ผ๋ ๋น์ทํ ๋ฐฉ์์ ํตํด, ๋๊ฐ์ ๋ก์ง(setTimeout ํ์ฉ)์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
๋๊ตฌ์ ์ด๋ฆ๋ง ๋ค๋ฅผ ๋ฟ, ์ฑ๋ฅ์ ์ต์ ํํ๋ ์๋ฆฌ๋ ๋ง๊ตญ ๊ณตํต์ด๋๋๋ค.
✨๋ณด์ด์ง ์๋ ๊ณณ์ ๋ฐฐ๋ ค
์ฐ๋ฆฌ๊ฐ ๋งค์ผ ์ฐ๋ ์น์ฌ์ดํธ๋ ์ฑ์ด ๋ถ๋๋ฝ๊ฒ ๋๊ปด์ง๋ ์ด์ ๋, ๋จ์ํ ์ธํฐ๋ท์ด
๋นจ๋ผ์๊ฐ ์๋๋๋ค.
๋ณด์ด์ง ์๋ ๊ณณ์์ ๋๋ฐ์ด์ค์
์ค๋กํ ๊ฐ์ ๊ธฐ์ ๋ค์ด ๋์์์ด ๊ตํต์ ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ
์๊ปด์ฃผ๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
ํน์ ๋์ค์ ์ด๋ค ์ฌ์ดํธ์์ ๊ฒ์์ด๋ฅผ ๋ง ์
๋ ฅํ๋๋ฐ๋ ๋ ์ด ๊ฑธ๋ฆฌ์ง
์๋๋ค๋ฉด,
"์, ์ฌ๊ธฐ ๊ฐ๋ฐ์๊ฐ ๋๋ฐ์ด์ค ์ฒ๋ฆฌ๋ฅผ ์ ํด๋จ๊ตฌ๋!" ํ๊ณ ์๊ฐํด๋ณด์๋ ๊ฑด
์ด๋จ๊น์?
์์ ๊ธฐ์ ์ ์ฐจ์ด๊ฐ ๋ช
ํ ์๋น์ค๋ฅผ ๋ง๋ญ๋๋ค.

๋๊ธ ์ฐ๊ธฐ