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));