防抖节流

Posted vicky24k

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防抖节流相关的知识,希望对你有一定的参考价值。

防抖:触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间

 1 function debounce(func, wait) {
 2       var timeout;
 3       return function () {
 4           var _this = this, args = arguments;
 5           timeout && clearTimeout(timeout)
 6           timeout = setTimeout(function(){
 7               func.apply(_this, args)
 8           }, wait);
 9       }
10   }

 

节流:高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率

 1 function throttle(func, wait) {
 2     var timeout;
 3     return function() {
 4         var _this = this, args = arguments;
 5         if (!timeout) {
 6             timeout = setTimeout(function(){
 7                 timeout = null;
 8                 func.apply(_this, args)
 9             }, wait)
10         }
11 
12     }
13 }

或者

 1 function throttle(func, wait) {
 2     var previous = 0;
 3     return function() {
 4         var now = Date.now();
 5         var _this = this, args = arguments;
 6         if (now - previous > wait) {
 7             func.apply(_this, args);
 8             previous = now;
 9         }
10     }
11 }

 

以上是关于防抖节流的主要内容,如果未能解决你的问题,请参考以下文章

防抖节流一步一步详细讲解,从简单到复杂,从入门到深入了解,再到 Vue 项目中是怎样调用防抖节流方法的

JavaScript性能优化8——防抖与节流

JavaScript性能优化8——防抖与节流

手写防抖节流

手写防抖节流

防抖和节流