setTimeout(func | code [,delay,params])
func
| code
: 타이머 만료후 실행할 콜백 함수delay
: 만료 시간params
: func에 전달할 인자들return
: 고유 idclearTimeout(timeId)
: id에 해당하는 함수를 취소한다.setInterval(func | code [,delay,params])
func
| code
: 타이머 반복마다 실행할 콜백 함수delay
: 반복 시간params
: func에 전달할 인자들return
: 고유 idclearInterval(timeId)
: id에 해당하는 함수를 취소한다.
let count = 0;
const timeId = setInterval(() => {
console.log(count++);
if (count === 5) clearInterval(timeId);
}, 1000);
const debounce = (callback, delay) => {
let timeId;
return (event) => {
if (timeId) clearTimeout(timeId);
timeId = setTimeout(callback, delay,event);
};
};
const throttle = (callback, delay) => {
let timeId;
return (event) => {
if (timeId) return;
timeId = setTimeout(
() => {
callback();
timeId = null;
},
delay,
event
);
};
};
delay에 해당하는 기간동안 쓰로틀 함수가 실행되어도 무시한다.
실무에서는 간략한 구현이 아닌 라이브러리 이용을 권장한다.