setTimeout, setInterval 버블링 방지(Avoid bubbling)
일반적으로 setInterval은 지정한 시간을 무한 루프 돌리게 된다
잘못쓰게 되면 무한 루프들이 중복되어 사이트가 느려지는 병목현상이 발생될 수 있다
이런걸 방지 하기 위해서는 정확하게 한 변수에 setInterval을 정의 하고 이 변수를 clearInterval
해줘야된다
전역변수 사용의 최소가 성능에 큰 도움을 주는건 알고 있지만 필요할때는 사용해야된다는게
내 지론이다.그래서 전역변수에 담고 이것을 해제 시키면 해결된다.
var loopVal; //전역 루프 변수
function work(){
var i = 0;
if(window[loopVal] == null){
alert("전역변수에 아무것도 없습니다");
}else{ //함수가 실행됐을때만 clear함
alert("전역변수에 setTimeout 이 담겨있습니다");
clearTimeout(window[loopVal]);
}
return function(){
window[loopVal] =
setTimeout(function(){
alert(i);
i += 1;
typeof working === "function" && working();
},3000);
}
};
var working = work();
working();
댓글 없음:
댓글 쓰기