> 웹 프론트엔드 > JS 튜토리얼 > Javascript Throttle & Debounce 애플리케이션 소개_기본 지식

Javascript Throttle & Debounce 애플리케이션 소개_기본 지식

WBOY
풀어 주다: 2016-05-16 17:40:04
원래의
1385명이 탐색했습니다.
스로틀
특정 시간 동안의 모든 호출을 무시하며 발생 빈도가 상대적으로 높고 처리량이 많은 경우에 사용하기에 적합합니다.
코드 복사 코드는 다음과 같습니다.

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 test = function(래퍼, 임계값) { var log = function() { console.log(Date.now() - start) }; var Wrapper(log, Threshold); var start = Date.now()
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)

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿