π Debounce μ Throttle μ μ΄μ©ν μ΄λ²€νΈ μ²λ¦¬
debounce
μ throttle
μ κ³Όλν μ΄λ²€νΈ λ°μμΌλ‘ μΈν μ±λ₯ μ νλ₯Ό λ°©μ§νλ λ°©λ²μ
λλ€.
μ΄ λμ μΌμ μκ° κ°κ²©μ λκ³ μ΄λ²€νΈλ₯Ό νΈμΆνλ€λ λμΌν λͺ©νλ₯Ό κ°μ§κ³ μμ§λ§
μλ‘ λμ λ°©μμ΄ λ€λ¦ λλ€.
π Debounce μ λμ λ°©μκ³Ό ꡬν
1οΈβ£ Debounce λμ μμ
debounce
λ μ΄λ²€νΈλ₯Ό κ·Έλ£Ήννμ¬ νλμ μ΄λ²€νΈλ§ νΈμΆλλλ‘ ν©λλ€.
μ μμμ κ°μ΄ debounce
λ μΌμ waiting time
λμ ν¨μ νΈμΆμ΄ μλ κ²½μ°
κ°μ₯ λ§μ§λ§ μ΄λ²€νΈλ₯Ό μ νν©λλ€. (trailing
)
μ΄ λμ μ κ°μ₯ μ²μ νΈμΆλ μ΄λ²€νΈλ₯Ό μ ννλ λ°©λ²λ μμ΅λλ€. (leading
)
2οΈβ£ Debounce ꡬννκΈ°
function debounce(callbackFn, timerTick) {
let timerId = null;
return (...args) => {
if (timerId) {
clearTimeout(timerId);
}
timerId = setTimeout(() => {
callbackFn.apply(this, args);
}, timerTick);
};
}
Debounce λμ νμΈνκΈ°
μμμ ꡬνν throttle
ν¨μμ λμμ ν
μ€νΈ νκΈ° μν΄μ
λ€μ μ½λλ₯Ό ν΅ν΄ scroll
μ΄λ²€νΈμ νΈλ€λ¬λ₯Ό ν λΉνμ΅λλ€.
const debouncedEventHandler = debounce(() => console.log("event!"), 2000);
window.addEventListener("scroll", debouncedEventHandler);
π Throttle μ λμ λ°©μκ³Ό ꡬν
Throttle λμ μμ
Throttle
μ μΌμ κΈ°κ°λμ μ°μμ μΈ μ΄λ²€νΈκ° μ΅λ 1λ²λ§ μ€νλκ² ν©λλ€.
μ΄λ²€νΈκ° κΎΈμ€ν λ°μνλ μν©μμ μΌμ time interval
κ°κ²©μΌλ‘
μ΄λ²€νΈλ₯Ό μ²λ¦¬νκ³ μΆλ€λ©΄ debounce
λμ throttle
μ μ¬μ©νλ©΄ λ©λλ€.
1οΈβ£ Throttle ꡬννκΈ°
function throttle(callbackFn, timerTick) {
let waiting = false;
return (...args) => {
if (!waiting) {
callbackFn.apply(this, args);
waiting = true;
setTimeout(() => (waiting = false), timerTick);
}
};
}
2οΈβ£ Throttle λμ νμΈνκΈ°
λμΌν λ°©λ²μΌλ‘ throttle
ν
μ€νΈ μ½λλ₯Ό scroll
μ΄λ²€νΈμ ν λΉν΄λ΄€μ΅λλ€.
const throttledEventHandler = throttle(() => console.log("event!"), 2000);
window.addEventListener("scroll", throttledEventHandler);
π μ°Έκ³ μλ£
Javascript: ΠΡΠ»ΠΈΡΠΈΠ΅ Debounce ΠΎΡ Throttling | xandeadx.ru
'π¨βπ» web.dev > js.ts' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
TypeScript + Jest μ λ ν μ€νΈ μμ±νκΈ° (0) | 2022.11.27 |
---|---|
async function μλ³νκΈ° (1) | 2022.08.08 |
[TypeScript] enum κ³Ό union type, μΈμ μ¨μΌν κΉ? (2) | 2022.07.09 |
[JavaScript] Array.sort λ μμ μ±μ 보μ₯ν κΉ? (0) | 2022.03.09 |
[TypeScript] js.map νμΌμ 무μμΌκΉ? (0) | 2022.03.07 |
π¬ λκΈ