您好,欢迎来到易妖游戏网。
搜索
您的当前位置:首页函数节流与防抖的含义

函数节流与防抖的含义

来源:易妖游戏网



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)

Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务