函数节流与防抖的含义

一个新手
풀어 주다: 2017-09-22 09:39:53
원래의
1807명이 탐색했습니다.


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)
로그인 후 복사

위 내용은 函数节流与防抖的含义의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.