Home > Web Front-end > JS Tutorial > body text

Javascript Throttle & Debounce Application Introduction_Basic Knowledge

WBOY
Release: 2016-05-16 17:40:04
Original
1363 people have browsed it
Throttle
Ignores all calls within a certain period of time. It is suitable for use when the frequency of occurrence is relatively high and the processing is heavy.
Copy code The code is as follows:

var throttle = function (func, threshold, alt) {
var last = Date.now();
threshold = threshold || 100;
return function () {
var now = Date.now();
if (now - last < threshold) {
if (alt) {
alt.apply(this, arguments);
}
return;
}
last = now;
func. apply(this, arguments);
};
};

Debounce
The called method will only start executing when there is no call within a certain interval.
Copy code The code is as follows:

var debounce = function (func, threshold, execASAP) {
var timeout = null;
threshold = threshold || 100;
return function () {
var self = this;
var args = arguments;
var delayed = function ( ) {
if (!execASAP) {
func.apply(self, args);
}
timeout = null;
};
if (timeout) {
clearTimeout(timeout);
} else if (execASAP) {
func.apply(self, args);
}
timeout = setTimeout(delayed, threshold);
};
};

Test
Copy code The code is as follows:

var test = function (wrapper, threshold) {
var log = function () {
console.log(Date.now() - start);
};
var wrappedFunc = wrapper(log, threshold);
var start = Date.now();
var arr = [];
for (var i = 0; i < 10; i ) {
arr.push(wrapperedFunc);
}
while(i > 0) {
var random = Math.random() * 1000;
console.log('index: ' i);
console.log('random: ' random);
setTimeout(arr[--i], random);
}
};
test(debounce, 1000) ;
test(throttle, 1000);
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template