Debounce_Throttle - upswp/THXSTORE GitHub Wiki
Debounce
- μ
λ ₯μ λ°μΌλ©΄ νΉμ λμμ νλλ°κΉμ§ μΌμ ν μ§μ°μ΄ κ±Έλ¦°λ€. μ§μ°λλ λμ μλ‘μ΄ μ
λ ₯μ λ°μΌλ©΄ μ΄μ μ
λ ₯μ λμνλ λμμ νμ§ μκ³ λ λ€μ λμΌν μ§μ°μ κ°μ§λ€.
- μ¦, μλ‘μ΄ μ
λ ₯μ΄ μ΄μ μ
λ ₯μ μ·¨μνλ λ°©λ².
- μ΄λ² νλ‘μ νΈμμλ νμκ°μ
μ μ΄λ©μΌ μ€λ³΅μ νμΈνλλ° μ μ©νμλ€. μ΄λ©μΌλμ μ
λ ₯μ ν λλ§λ€ ν΄λΉ μ΄λ©μΌμ΄ μ€λ³΅λμλμ§ μλ²μ νμΈνλλ°, debounceλ₯Ό μ μ©ν¨μΌλ‘μ¨ ν΅μ νμλ₯Ό μ€μΌ μ μμλ€.
- ν΄λ‘μ μ setTimeoutμ μ μ ν μ¬μ©ν΄μ λ§λ€ μ μλ€.
const debounce = (func, delay) => {
let timeoutId = null;
return (...args) => {
clearTimeout(timeoutId);
timeoutId = setTimeout(func.bind(null,...args), delay);
}
}
Throttle
- μ
λ ₯μ λ°μΌλ©΄ νΉμ λμμ νλλ°κΉμ§ μΌμ ν μ§μ°μ΄ κ±Έλ¦°λ€. μ§μ°λλ λμ μλ‘μ΄ μ
λ ₯μ λ°μλ 무μνλ€.
- ν΄λ‘μ μ setTimeoutμ μ μ ν μ¬μ©ν΄μ λ§λ€ μ μλ€.
- μ΄λ² νλ‘μ νΈμμλ λ±ν μ¬μ©νμ§ μμλ€. λΌμ΄λΈ λ°©μ‘ λ μ±ν
μ ν κ²½μ° κΈΈμ΄μ§ μ±ν
λ΄μμ λ§μΆ°μ μ€ν¬λ‘€μ λ΄λ¦¬λλ° μ°λ €κ³ νλλ°, λ§€λ² λ©μΈμ§κ° μ ν λλ§λ€ κ°±μ νλκ² λ μ’μ μ¬μ©μ κ²½νμ μ€ κ² κ°μμ μ μ©νμ§ μμλ€.
const throttle = (func, delay) => {
let throttled = false;
return (...args) => {
if(!throttled) {
throttled = true;
setTimeout(() => {
func(...args);
throttled = false;
}
},delay);