개발
Javascript 개발 일지
Javascript 함수 중복 호출 막기(제어)
166 views as of September 26, 2024.
앞단 서브밋에 해당하는 특정 함수를 여러번 실행되지 못하게 막을 필요성이 있어서 아래와 같은 함수를 적용해보았다.
function throttle(func, delay) {
let lastCall = 0;
return function(...args) {
const now = new Date().getTime();
if (now - lastCall >= delay) {
lastCall = now;
func.apply(this, args); // 원래 함수 호출
}
};
}
// 첫 번째는 바로 실행되고, 이후 특정시간 동안은 추가 호출을 무시함
const throttledUpdateWorkLog = throttle(updateWorkLog, 1000);
Copy
원리는 무진장 간단하다.
함수 하나를 받아서 실행시킬때 그 함수의 호출시간을
lastCall
변수에 저장해두고 이후 함수 호출시 현재시간 now
에서 기존 lastCall
변수의 값을 뺀값이 delay
의 값보다 크면 특정시간이 지났다고 가정해서 함수의 호출을, 그렇지 않으면 무시하는 방법이다.여기서
not
, lastCall
, delay
는 timestamp ms
단위로 제어한다.throttle
함수 선언후 throttleYourFunction
으로 기존의 함수를 감싸서 다시 선언해주고 실제로 사용하는 곳에서는 기존 함수명을 사용하는게아니라 throttleYourFunction
명을 사용해서 호출하면된다.기존에
yourFunction(params)
처럼 호출했다면 throttleYourFunction(params)
처럼 호출해야된다는 의미.이 코드를 어디 적용할만하냐면 저장버튼이나 다운로드 버튼을 연타하는 고객의 행동을 제어할 수 있다. 이런 쓰로틀을 거는 행위는 물론 백단에서도 처리하는게 맞긴한데, 앞단에서 스크립트로 가볍게 제어할 수 있다는것도 이번에 알게 되었다. 끝.
#개발 #Javascript #자바스크립트 #함수 #중복 #호출 #제어
0
개의 댓글
Collection. Javascript 개발 일지
01.
랜덤으로 한글이름 생성하기
2018
02.
Ajax를 이용해 Post 요청하는 방법들
2018
03.
jquery filter, 실시간 검색
2021
04.
브라우저별로 스크립트 따로 쓰는 법, ie 조건문
2021
05.
es5만 지원되는 ie같은 브라우저에 es6 쓰는 방법, 바벨(babeljs)
2021
06.
Javascript 함수 중복 호출 막기(제어)
2024
07.
Javascript 객체 병합
2024
08.
코드 하이라이터(highlight.js) 적용 및 플로라 에디터 연동
2024
09.
구글 애드센스 광고 로딩 안되면 영역 감추기 (2) ~ Intersection Observer
2024