레이블이 javascript bubbling인 게시물을 표시합니다. 모든 게시물 표시
레이블이 javascript bubbling인 게시물을 표시합니다. 모든 게시물 표시

2012년 4월 6일 금요일

setTimeout? setInterval? Avoid bubbling?

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