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

댓글 없음:

댓글 쓰기