μλ₯Ό λ€μ΄λ³΄μ.
μ΄λ€ κ°μ μ λ ₯ν λ ν΄λΉ λ¨μ΄κ° ν¬ν¨λ λ¨μ΄λ₯Ό μ 곡νλ κΈ°λ₯μ ꡬννλ μν©.
= κ²μμμ§ κ²μμ΄ μΆμ² κ²°κ³Ό κ°μ κΈ°λ₯.
μ΄λ΄ λ κΈμκ° λ³ν λλ§λ€, μ΄λ€ function μ΄λ APIλ₯Ό νΈμΆνμ¬μΌ νλλ°.. λ무 μ¦μ ν¨μ νΈμΆμ΄ μΌμ΄λλ€.
λ¬Όλ‘ νλ‘ νΈμλμ λ°±μλμμ μ±λ₯ μ΅μ νκ° λμ΄ μμΌλ©΄ λ¬Έμ κ° λ μΌμ΄λ μλ μμΌλ..
κ·Έλλ λ§μΌμ λ¬Έμ λ₯Ό μ κ±°ν΄μ£Όλ κ²μ΄ μ€μν κ²μ΄λ€.
μ΄λ λ³΄ν΅ λλ°μ΄μ€ Debounce μ μ°λ‘νλ§ Throttling μ κ°λ μ μ μ©νκ² λλλ°
μ΄ λκ°μ§μ 곡ν΅μ κ³Ό μ°¨μ΄μ μ λν΄ μ μ΄λ³΄κ³ μ νλ€.
곡ν΅μ
λλ°μ΄μ€μ μ°λ‘νλ§μ 곡ν΅μ μ..
1. ν¨μκ° λ무 λ§μ΄ νΈμΆλμ§ μλλ‘ μ μ΄νλ ν ν¬λμ μ’ λ₯μ΄λ©°,
2. μ±λ₯ μ΅μ νμ 리μμ€ κ΄λ¦¬μ λ§μ΄ μ¬μ©λλ κ°λ μ΄λ€.
Debounce λλ°μ΄μ€
νΉμ μκ° μ΄νμ νλ²λ§ μ€ν
μ§μ λ Delay μμ nλ²μ νΈμΆμ΄ λ°μνλ κ²½μ° λ§μ§λ§ νλ²λ§ μ€ννλλ‘ νλ λ°©λ².
κΈ°λ³Έμ μΌλ‘ ν¨μ νΈμΆμ΄ μ§μ°λλ κ°λ . (λλ°μ΄μ€ λλ μ΄κ° 1μ΄λΌλ©΄ 1λ²λ§ ν΄λ¦ν΄λ 1μ΄ νμ μ€νλκ³ , 1μ΄ μμ 100λ²μ ν΄λ¦ν΄λ 100λ²μ§Έ ν΄λ¦μ΄ μ€νλ¨)
μ§μ λ λλ μ΄ μ΄μ μ νΈμΆμ μμ²νκ² λλ©΄ μ΄μ νΈμΆμ΄ μ·¨μλλ κ²μ΄λ€.
λμλ°©μ
1. ν¨μ νΈμΆμ΄ λλ°μ΄μλ₯Ό νΈλ¦¬κ±°ν¨
2. λλ°μ΄μλ μ§μ λ κΈ°κ° λμ νμ΄λ¨Έλ₯Ό μ€μ
3. νμ΄λ¨Έλ₯Ό λκΉμ§ κΈ°λ€λ¦¬κΈ° μ μ μλ‘μ΄ νΈμΆμ΄ λ€μ΄μ€λ©΄ νμ΄λ¨Έμ μκ°μ΄ μ²μμΌλ‘ μ΄κΈ°ν.
4. νμ΄λ¨Έκ° μ΄κΈ°νλμ§ μκ³ λκΉμ§ κΈ°λ€λ¦¬λ©΄ ν¨μκ° νΈμΆ.
μ¬μ© μΌμ΄μ€
1. κ²μμ΄ μλμμ±: μ¬μ©μκ° μ λ ₯μ μ€λ¨ν λκΉμ§ κ²μ κ²°κ³Όμ λν API νΈμΆμ μ§μ°μν΄
2. μμ μ ν¨μ± κ²μ¬: μ¬μ©μκ° λ°μ΄ν° μ λ ₯μ λ€ λ§μΉ λ€μ μ ν¨μ± κ²μ¬λ₯Ό μμνλ μΌμ΄μ€
3. API νΈμΆ μλ μ ν: API νΈμΆμ΄ λ무 μ¦μ κ²½μ° μλ²μ λΆνκ°κ°λ―λ‘ λλ°μ΄μ€λ‘ νΈμΆμ μ ν. μ λ£ APIλ₯Ό νΈμΆνλ κ²½μ°μ μ μ©νκ² μ¬μ©λ¨.. γ γ ;
4. μ€μ λ°©μ§: μν μλΉμ€μ κ²½μ° μ‘κΈ μμ² λ²νΌμ μ€μλ‘ λλ² ν΄λ¦ν΄λ λ§μ§λ§ ν λ²μ λν΄μλ§ μ€μ λ‘ μ‘κΈμ΄ μμ²λ¨.
5. λΈλ‘κ·Έ κΈμ°κΈ° μλν° μλμ μ₯ κΈ°λ₯: κΈ μ°λ€κ° μΌμ μκ°λμ νμ΄νμ΄ μμΌλ©΄ μλμ μ₯ func.μ΄ λκ² λ¨.
μμ
// λλ°μ΄μ€ μκ° μ§μ
let debounceTimer=1000;
function debounce(func, delay) {
return function(){
clearTimeout(debounceTimer);
debounceTimer = setTimeout(()=> func.apply(this, arguments), delay);
}
}
Throttling μ°λ‘νλ§
μΌμ ν κ°κ²©μΌλ‘ νλ²λ§ μ€ννκΈ°
ν¨μκ° νΈμΆλλ νμμ μκ΄μμ΄ μΌμ κ°κ²©μΌλ‘ ν¨μλ₯Ό μ€ν
λλ μ΄λ₯Ό μ£Όλ λ°©μμ λλ°μ΄μ€μ λμΌνμ§λ§ μ€μ ν μκ° λ΄μ μΆκ°μ μΈ ν¨μ νΈμΆ μμ²μ 무μν¨. λλ°μ΄μ€μ λ¬λ¦¬ λλ μ΄ κ°μ μ΄κΈ°ννμ§ μμ.
λλ μ΄κ° λλλ©΄ ν¨μκ° μ€νλλ λ°©μ
λμ λ°©μ
1. ν¨μ νΈμΆμ΄ μ€λ‘νλ§μ νΈλ¦¬κ±°
2. μ€μ λ λλ μ΄ λ΄μ ν¨μκ° νΈμΆλμ§ μμΌλ©΄ ν¨μκ° μ€νλ¨
3. λλ μ΄ λ΄ μΆκ° νΈμΆμ 무μ
4. λλ μ΄ λ§λ£ μ νΈμΆμ΄ μ€νλκ³ νλ‘μΈμ€κ° λ°λ³΅λ¨
μ¬μ© μΌμ΄μ€
1. 무ν μ€ν¬λ‘€: μ¬μ©μκ° μ€ν¬λ‘€μ λ΄λ Έμ λ μ€νλμ§λ§, μ€ν¬λ‘€λ‘ μΈμλ λͺ¨λ ν½μ μ λν΄ μμ²μ 보λ΄μ§λ μμ
2. μ€μκ° μ λ°μ΄νΈ: μ¦μ μ λ°μ΄νΈκ° λμμ΄ λμ§λ§, μ¦κ°μ μ΄μ΄μλ μλλ κ²½μ°μ μ μ©ν¨.
μμ
let lastcall = 0;
function throttle(func, delay) {
return function (){
const now = new Date().getTime();
if(now-lastcall < dalay ) return;
lastcall = now;
return func.apply(this, arguments);
}
}
μ°¨μ΄μ
1. μ€ν λΉλ
-. μ°λ‘νλ§μ μΌμ μκ° μμ νλ² μ€νλλ€λ 보μ₯μ΄ μμ§λ§, λλ°μ΄μ€μ κ²½μ°λ μΌμ μκ°λμ μ€λ³΅ νΈμΆμ΄ μμ΄μΌμ§λ§ μ€νμ΄ λ¨
2. μ¬μ©μ νΌλλ°±
-. μ°λ‘νλ§μ μ¦κ°μ μΈ νΌλλ°±μ μ κ³΅ν΄ μ€ν¬λ‘€κ³Ό κ°μ μμ μ μ μ©. λλ°μ΄μ±μ UIμ λ°μμ±μ λ¨μ΄νΈλ¦¬μ§λ§ μμ μ΄ μλ£λ λκΉμ§ ν¨μ νΈμΆμ λ°©μ§νλ €λ κ²½μ°μ μ μ©.
3. 볡μ‘μ±
-. μ°λ‘νλ§μ κ²½μ° μΌλ°μ μΈ ν¨μ νΈμΆλ§ μ ννλ―λ‘ κ΅¬ννκΈ°κ° λ μ¬μ.
-. λλ°μ΄μ±μ κ²½μ° νμ΄λ¨Έμ λ 볡μ‘ν λ‘μ§μ΄ νμ.
κ·Έλ¬λ―λ‘...
μκ°μ λ―Όκ°ν μμ μ μ°λ‘νλ§μΌλ‘ μ²λ¦¬νκ³ ,
μκ°μ λ―Όκ°νμ§ μμ μμ μ λλ°μ΄μ€λ‘ μ²λ¦¬νμ!
λ²μΈλ‘
Lodash λ Rxjs κ°μ λΌμ΄λΈλ¬λ¦¬κ° μ‘΄μ¬νλ―λ‘ μ§μ ꡬννκΈ°κ° κΊΌλ €μ§λ€λ©΄
μμ λΌμ΄λΈλ¬λ¦¬μ λν΄ μμ보λ κ²λ μ’μ κ² κ°μ.