防抖函数与节流函数使用

2021-03-02  本文已影响0人  子语喵

他们都是可以防止一个函数被无意义的高频率调用

防抖函数:是函数在特定的时间内不被再调用后执行
节流函数:是确保函数特定的时间内至多执行一次。

<input v-model="searchText" @input='search' placeholder="防抖" class="search-placeholder">
<input v-model="searchText" @input="searchInputChage" placeholder="节流" class="search-placeholder">

1.防抖函数

export default {
    debounce(fn, delay = 500) {   //默认500毫秒
        var timer = null
        return function() {
            var args = arguments;
            if(timer) {
                clearTimeout(timer);
            }
            timer = setTimeout(() => {
                fn.apply(this, args);   // this 指向vue
            }, delay);
        };
    }
}

import debounce from '@/utils/common.js'; //注意引用路径

search:debounce(() => {//防抖使用
  //请求接口
},300)

2.节流函数

export default {
  throttle(fn,delay = 500,duration = 1000){
    var that = this;
    var timer = this.timer;
    var begin = new Date().getTime();
    return function(){
      var context = that;
      var args = arguments;
      var current = new Date().getTime();
      clearTimeout(timer);
      if(current-begin>=duration){
        fn.apply(context,args);
        begin=current;
      }else{
        console.log(delay)
        that.timer=setTimeout(function(){
        fn.apply(context,args);
        },delay);
      }
    }
  }
}

import throttle from '@/utils/common.js'; //注意引用路径

searchInputChage() {//节流使用
  throttle (this.getSearch, 200,1000)();
},
getSearch(){
  //请求接口
}
上一篇下一篇

猜你喜欢

热点阅读