2018년 3월 23일 금요일

throttling(쓰로틀링)

throttling(쓰로틀링) 

- 함수, 메서드 등 일정 시간 전에 호출 시 호출이 안되고, 해당 시간이 지나야 처리가 되는 기능
- ajax와 같이 자주 호출 되는 함수들에 사용
- 반복되서 사용되는 api 특히 비용이 들어갈 경우 더욱 쓰로틀링이 필요해 보인다.

Code

-------------------------------------------------------------------------------------------------
<a id="throttling" href="#aa" >throttling</a>
<script>

document.querySelector("#throttling").onclick = throttling(function(e){
       console.log("throttling");
},1000);


// 1초 뒤에 호출 동작
function throttling(fn, delay){
    let isRunning = false, timeoutFn, nextTime = 0;
    return (...args)=>{
        isRunning = (Date.now() - nextTime  > delay);
        if(isRunning){
            let _this = this;
            timeoutFn = setTimeout(function(){
                fn.call(_this, ...args);
            },delay);   
            nextTime = Date.now();
        }
       
    }
}
</script>

댓글 없음:

댓글 쓰기