函数节流与防抖的含义
来源:懂视网
责编:小采
时间:2020-11-27 20:12:57
函数节流与防抖的含义
函数节流与防抖的含义:function debounce(fn, delay, immediate){ var timeout, args, context, timestamp, result; var later = function(){ var last = Date.now() - timestamp; if(last < delay && last >= 0){ timeout = setTimeout(later, delay - last); }else
导读函数节流与防抖的含义:function debounce(fn, delay, immediate){ var timeout, args, context, timestamp, result; var later = function(){ var last = Date.now() - timestamp; if(last < delay && last >= 0){ timeout = setTimeout(later, delay - last); }else

function debounce(fn, delay, immediate){
var timeout,
args,
context,
timestamp,
result;
var later = function(){
var last = Date.now() - timestamp;
if(last < delay && last >= 0){
timeout = setTimeout(later, delay - last);
}else{
timeout = null;
if(!immediate){
result = fn.apply(context, args);
if(!timeout){
context = args = null;
}
}
}
}; return function(){
context = this;
args = arguments;
timestamp = Date.now();
console.log(timestamp);
var callNow = immediate && !timeout;
if(!timeout){
timeout = setTimeout(later, delay);
} if(callNow){
result = fn.apply(context, args);
context = args = null;
} return result
}
};function throttle(method , duration ,delay ){
var timer = null,
// 记录下开始执行函数的时间
begin = new Date();
return function(){
var context = this,
args = arguments,
// 记录下当前时间
current = new Date(); // 函数节流里的思路
clearTimeout(timer); // 记录下的两个时间相减再与duration进行比较
if(current-begin >= duration){
method.apply(context , args);
begin = current;
}else{
timer = setTimeout(function(){
method.apply(context , args);
} , delay);
}
}
}
window.onresize = throttle(function(){console.log('resize')},1000,500)
函数节流与防抖的含义
函数节流与防抖的含义:function debounce(fn, delay, immediate){ var timeout, args, context, timestamp, result; var later = function(){ var last = Date.now() - timestamp; if(last < delay && last >= 0){ timeout = setTimeout(later, delay - last); }else