🌿 스로틀링(Throttling)

스로틀링(Throttling)이란?

스로틀링은 자바스크립트에서 이벤트가 너무 자주 발생하는 것을 방지하고, 성능을 최적화하기 위해 사용되는 기술입니다. 예를 들어, 스크롤 이벤트는 매우 자주 발생할 수 있기 때문에, 이를 그대로 처리하면 성능에 큰 영향을 줄 수 있습니다. 스로틀링은 주기적으로(예: 100밀리초마다) 이벤트를 처리하도록 하여, 이벤트 핸들러가 너무 자주 실행되지 않게 합니다.

왜 스로틀링을 사용할까요?

  1. 성능 최적화: 너무 자주 실행되는 이벤트 핸들러는 성능에 부정적인 영향을 미칠 수 있습니다. 스로틀링을 통해 이벤트 핸들러 실행 빈도를 줄이면, CPU 사용률과 메모리 사용을 줄일 수 있습니다.
  2. 리소스 절약: 네트워크 요청이나 DOM 조작과 같이 리소스를 많이 사용하는 작업을 제한된 빈도로 실행함으로써, 불필요한 리소스 소비를 줄일 수 있습니다.

무한스크롤에 스로틀링 적용

이제 스로틀링 함수를 무한 스크롤 이벤트에 적용합니다.

위 무한 스크롤에서 제공해드린 실습코드를 보면, 스로틀링이 적용되어있지 않아서 이벤트 핸들러가 자주 실행되고 있었습니다. 방금 배운 스로틀링 개념을 추가하여 성능을 최적화 해 볼까요?

let 타이머;
window.addEventListener("scroll", () => {
	const 스크롤퍼센트 = document.documentElement.scrollTop / (document.documentElement.scrollHeight - document.documentElement.clientHeight)
	if(스크롤퍼센트 < 0.9) return;
	if(타이머) return;
            
	console.log("상자를 그려줍니다.")
	JS_네모상자보여주는기능()

	타이머 = setTimeout(() => {
		clearTimeout(타이머)
		타이머 = null

		const 마지막스크롤퍼센트 = document.documentElement.scrollTop / (document.documentElement.scrollHeight - document.documentElement.clientHeight)
		if(마지막스크롤퍼센트 === 1) JS_네모상자보여주는기능()
	}, 1000)
})

이렇게 스로틀링을 통해 스크롤 이벤트가 너무 자주 발생하는 것을 막고, 성능을 최적화할 수 있습니다.

📝 실습 코드