如何在Vue中使用debouce防抖函数

发布时间:2022-04-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了如何在Vue中使用debouce防抖函数脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.抖函数

假定两次 Ajax 通信的间隔不得小于2500毫秒,上面的代码可以改写成下面这样。

$('textarea').on('keydown', debounce(ajaxAction, 2500));

function debounce(fn, delay){
  VAR timer = null; // 声明计时器
  return function() {
    var context = this;
    var args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };
}

上面代码中,只要在2500毫秒之内,用户再次击键,就会取消上一次的定时器,然后再新建一个定时器。这样就保证了回调函数之间的调用间隔,至少是2500毫秒。

2.Vue中使用debouce防抖函数

创建一个 debounced(防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法。 debounced(防抖动)函数提供一个 cancel 方法取消延迟的函数调用以及 flush 方法立即调用。 可以提供一个 options(选项) 对象决定如何调用 func 方法,options.leading 与|或 options.trailing 决定延迟前后如何触发

(注:是 先调用后等待 还是 先等待后调用)。

 func 调用时会传入最后一次提供给 debounced(防抖动)函数 的参数。 后续调用的 debounced(防抖动)函数返回是最后一次 func 调用的结果。

Lodash debouce参数:

  • func  (Function) : 要防抖动的函数。
  • [waIT=0]  (number) : 需要延迟的毫秒数。
  • [options=]  (Object) : 选项对象。
  • [options.leading=false]  (boolean) : 指定在延迟开始前调用。
  • [options.maxWait]  (number) : 设置 func 允许被延迟的最大值。
  • [options.trailing=true]  (boolean) : 指定在延迟结束后调用。
<template>
<el-input
    v-model="value"
    size="mini"
    placeholder="请输入.."
    clearable
    @keydown.enter="handleSeArch"
  ></el-input>
</template>
<script>
import _ From 'lodash'
export default {
data() {
    return { value: '' }
},
create() {
    this.handleSearch = _.debounce(() => {
      // 获取列表
      this.getList();
    }, 300);
},
beforedestroy() {
    // 取消该函数的防抖动调用
    this.handleSearch.cancel();
},
}
</script>

到此这篇关于如何在Vue中使用debouce防抖函数的文章就介绍到这了,更多相关Vue中使用debouce防抖函数内容请搜索脚本宝典以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本宝典!

脚本宝典总结

以上是脚本宝典为你收集整理的如何在Vue中使用debouce防抖函数全部内容,希望文章能够帮你解决如何在Vue中使用debouce防抖函数所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。