Vue 防抖 debounce

在工作中经常遇到input框输入时多次调用接口或校验,同一时间,连续多次点击按钮,频繁发送请求,导致数据频繁加载问题,本篇介绍一下如何规避这种现象。

一、了解 debounce

防抖函数 debounce 指的是某个函数在某段时间内,无论触发了多少次回调,都只执行最后一次。debounce有三个参数 

1.参数讲解 

_.debounce(func, [wait=0], [options={}]

其中options有三个可选参数

eading:指定在延迟开始前是否执行 func(默认为 false)。

maxWait:设置 func 允许被延迟的最大值。

trailing:指定在延迟结束后是否执行 func(默认为 true)

二、debounce的使用

1.下载依赖

npm i --save lodash

lodash工具库地址icon-default.png?t=N7T8https://lodash.com/docs#debounce

2.引入依赖

确保项目中已经引入jquery库,否则会报错

import _ from 'lodash'

3.在VUE中的使用

假设有一个结案按钮,每点击一次进行一次结案,已结案的项目不可再结案,在接口还未成功返回时,会存在同一时间点击多次,造成接口数据报错问题。

定义一个 closeFun()方法

<span class="btn" @click="closeFun()">
  <img src="@/assets/image/closing.png" class="tb mr-5 img">
  <span class="tb">結案</span>
</span>

在使用closeFun时,加一个_.debounce  

closeFun: _.debounce(function (){}) 这样使用是为了防止在同一页面定义多个debounce,每调用一次都会创建一个新的防抖函数,而不是在多次调用之间共享同一个防抖函数。这会导致防抖效果无法实现。

methods: {
    closeFun: _.debounce(function (msg) {
      alart(msg)
    },1000, {
      'leading': true, //在延迟开始前立即调用事件
      'trailing': false, //在延时结束后不调用,保证事件只被触发一次
    })
}

这样就ok啦 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值