Throttling

NOTE

Throttling์€ ์ผ์ • ๊ฐ„๊ฒฉ์œผ๋กœ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ œํ•œํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•ด๋„ ์ง€์ •๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ํ•œ ๋ฒˆ๋งŒ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กค์„ ํ•  ๋•Œ๋งˆ๋‹ค ์Šคํฌ๋กค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ, throttling์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •๋œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ์Šคํฌ๋กค ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋™์ž‘ ์›๋ฆฌ: ์ด๋ฒคํŠธ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋”๋ผ๋„, ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค๋งŒ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ์˜ˆ์‹œ:

    • ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์Šคํฌ๋กคํ•  ๋•Œ๋งˆ๋‹ค ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜ ํ™”๋ฉด์„ ๊ฐฑ์‹ ํ•  ๋•Œ, ๊ณผ๋„ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

    • ์œˆ๋„์šฐ ๋ฆฌ์‚ฌ์ด์ง• ์‹œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ


function throttle(func, delay) {
    let lastTime = 0;
    return function(...args) {
        const now = new Date().getTime();
        if (now - lastTime >= delay) {
            func(...args);
            lastTime = now;
        }
    };
}
 
window.addEventListener('scroll', throttle(function() {
    console.log('์Šคํฌ๋กค ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ');
}, 1000));