vue项目中使用节流throttle

问题描述

用户短时间快速点击,向后台发起多次请求
在这里插入图片描述

项目中有如图所示弹窗,用户编辑完成之后,快速点击确定,进行保存.
列表中会展示刚才保存的数据,可以看到出现了重复的数据.虽然后端已经加了参数名不能重复的校验,但是仍然可以成功保存.此时就需要前端进行节流限制
在这里插入图片描述

解决方案:

采用节流函数 对快速点击的操作进行限制:

先在项目中公共的js中编写节流函数 throttle 方便后续多个地方使用

//节流
export function throttle(fn, time) {
  let timer = null
  time = time || 1000
  return function (...args) {
    if (timer) {
      return
    }
    const _this = this
    timer = setTimeout(() => {
      timer = null
    }, time)
    fn.apply(_this, args)
  }
}

在需要的页面中引入节流函数,对需要进行节流的操作进行包裹.
throttle函数的两个参数 第一个是要执行的函数 第二个为节流时间.
这里有个坑,因为是在vue项目,所以经常需要this,但是网上好多节流函数的第一个参数都是用箭头函数写,所以导致内部指向并不是vue实例,如果你的执行函数中,需要用到this,请不要使用箭头函数,按照我这样写,this指向为vue实例,

import { throttle } from '@/assets/js/public.js';

method:{
//保存自定义参数(这个就是点击确定触发的操作)
    saveCustomerParameter: throttle(function () {
      console.log('这是你要进行的操作')
    }, 800),
}

完成上述操作后,再回去测试一下,看看是不是节流时间内,多次的操作只执行了一次.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云苍狗い

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值