스로틀 특정 시간 동안의 모든 호출을 무시하며 발생 빈도가 상대적으로 높고 처리량이 많은 경우에 사용하기에 적합합니다.
var throttle = function(func, Threshold, alt) {
var last = Date.now();
threshold = 임계값 || 100
return 함수() {
var now = Date.now(); 지금 - 마지막 < 임계값) {
if (alt) {
alt.apply(this, 인수)
return
}
last = now; >func.apply(this, 인수);
};
Debounce
호출된 메서드는 인수가 없을 때만 실행됩니다. 일정한 간격으로 전화하세요.
코드 복사
코드는 다음과 같습니다. var debounce = function(func, Threshold, execASAP) { var timeout = null;
threshold = 임계값 || 100;
return function () {
var self = this; = function ( ) {
if (!execASAP) {
func.apply(self, args);
}
timeout = null
};
clearTimeout(timeout)
} else if (execASAP) {
func.apply(self, args)
}
timeout = setTimeout(지연, 임계값); ;
};
테스트
코드 복사
var arr = []
for (var i = 0; i < ; 10; i ) {
arr.push(wrapperedFunc);
while(i > 0) {
var random() * 1000; log('index: ' i);
console.log('random: 'random)
setTimeout(arr[--i], random)
}
테스트(디바운스, 1000) ;
테스트(스로틀, 1000)