前端解决按钮重复提交数据问题(节流和防抖)

这篇具有很好参考价值的文章主要介绍了前端解决按钮重复提交数据问题(节流和防抖)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍿*★,°*:.☆( ̄▽ ̄)/$:*.°★* 🍿
🍟欢迎来到前端初见的博文,本文主要讲解在工作解决按钮重复提交数据问题(节流和防抖)
👨‍🔧 个人主页 : 前端初见
🥞喜欢的朋友可以关注一下,下次更新不迷路🥞

一、问题

当我们在页面进行点点点的操作时,很可能遇到点击两次的行为,这时候提交或保存按钮也没有进行校验,很可能保存两份数据,因此,作为开发人员,对需要保存类似的按钮进行校验很有必要。
前端解决按钮重复提交数据问题(节流和防抖)

二、 解决方案(通过节流防抖解决)

场景:解决按钮多次点击重复提交数据问题
防抖方法(debounce.js)

let timeout = null

/**
 * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数
 *
 * @param {Function} func 要执行的回调函数
 * @param {Number} wait 延时的时间
 * @param {Boolean} immediate 是否立即执行
 * @return null
 */
function debounce(func, wait = 500, immediate = false) {
    // 清除定时器
    if (timeout !== null) clearTimeout(timeout)
    // 立即执行,此类情况一般用不到
    if (immediate) {
        const callNow = !timeout
        timeout = setTimeout(() => {
            timeout = null
        }, wait)
        if (callNow) typeof func === 'function' && func()
    } else {
        // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法
        timeout = setTimeout(() => {
            typeof func === 'function' && func()
        }, wait)
    }
}

export default debounce

节流方法(throttle.js)

let timer; let
    flag
/**
 * 节流原理:在一定时间内,只能触发一次
 *
 * @param {Function} func 要执行的回调函数
 * @param {Number} wait 延时的时间
 * @param {Boolean} immediate 是否立即执行
 * @return null
 */
function throttle(func, wait = 500, immediate = true) {
   
    if (immediate) {
        if (!flag) {
            flag = true
            // 如果是立即执行,则在wait毫秒内开始时执行
            typeof func === 'function' && func()
            timer = setTimeout(() => {
                flag = false
            }, wait)
        }
    } else if (!flag) {
        flag = true
        // 如果是非立即执行,则在wait毫秒内的结束处执行
        timer = setTimeout(() => {
            flag = false
            typeof func === 'function' && func()
        }, wait)
    }
}
export default throttle

在mian.js进行挂载使

// 防抖方法
import debounce from './plugins/debounce'
// 节流方法
import throttle from './plugins/throttle'
const $u = {
  debounce,
  throttle
}
// 挂载节流防抖到原型
Vue.prototype.$u = $u

组件中使用

<el-button
  icon="iconfont icon-save-line"
  type="primary"
  @click="$u.throttle(() => getAllData(), 1000)"
  >保存
</el-button>
<!-- getAllData 按钮触发方法   1000时间 -->

总结

如果这篇【文章】有帮助到你💖,希望可以给我点个赞👍,创作不易,如果有对前端端或者对python感兴趣的朋友,请多多关注💖💖💖,咱们一起探讨和努力!!!
👨‍🔧 个人主页 : 前端初见文章来源地址https://www.toymoban.com/news/detail-484628.html

到了这里,关于前端解决按钮重复提交数据问题(节流和防抖)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 解决重复提交问题和表单唯一标识的 Redis 缓存实现

    在开发 Web 应用程序时,重复提交和表单唯一标识是常见的问题。重复提交可能导致数据重复插入或重复操作,而表单唯一标识则用于确保每个表单提交都是唯一的。本文将介绍如何使用 Java 来解决这些问题,并结合 Redis 缓存提供实际的案例。 什么是重复提交问题? 重复提

    2024年02月11日
    浏览(47)
  • 前端如何防止接口重复提交

    接口重复提交指的是在网络通信中,同一个请求被客户端多次发送到服务器端的情况。这种情况可能由于多种原因导致,例如用户在等待期间多次点击提交按钮、网络超时后客户端重新发送请求、客户端发送的请求在网络传输过程中出现重复等。 接口重复提交可能会导致多种

    2024年04月22日
    浏览(34)
  • 如何定制自己的应用层协议?|面向字节流|字节流如何解决黏包问题?如何将字节流分成数据报?

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量干货博客汇总 https://blog.csdn.net/yu_cblog/category_12379430.html?spm=1001.2014.3001.5482 网络计算器-序列化和反序列

    2024年02月16日
    浏览(41)
  • 小程序按钮重复点击解决方案

    小程序是直面用户便捷的应用,而在用户使用时往往都会涉及到关键节点的按钮点击,例如,注册登录时,页面跳转时,发送验证码时,付钱还款,弹出提示等等。。。如果没有控制好按钮重复点击的问题,那么影响用户体验。当然有时候也会被同行吐槽,这人不行。。。

    2024年02月13日
    浏览(42)
  • Kafka数据重复问题解决方案

    通常,消息消费时候都会设置一定重试次数来避免网络波动造成的影响,同时带来副作用是可能出现消息重复。 幂等性指: 幂等性使用示例: 为了更好理解,需要了解下Kafka幂等机制 这种设计针对解决了两个问题: 那什么时候该使用幂等: 事务使用示例:分为生产端 和

    2024年02月07日
    浏览(53)
  • Mysql Php 推送获取随机数据解决分页重复问题

    或许你已经看过很多博主写的文章,要不就是抄袭,要不就是给你一个下面的语句,随机是随机了,但是多来两页,你会发现前面出现的数据在第三页甚至第二页就出现了 这是因为rand()机制的问题,他每次都会打乱数据给你,然后你去取的时候0-10,11-20都有可能是同一个数据

    2024年02月06日
    浏览(47)
  • 解决MySQL中分页查询时多页有重复数据,实际只有一条数据的问题

    有一个离奇的BUG,在查询时,第一页跟第二页有一个共同的数据。有的数据却不显示。 后来发现是在SQL排序时没用主键排序。 解决:使用主键排序 以下是我准备的举例,可以自己试试。 分页查询公式:分页查询–他的公式为(伪代码): [NOT] LIMIT (curPage-1)*pageSize,pageSize 执行

    2024年02月16日
    浏览(37)
  • 微信小程序——swiper抖动问题解决以及节流、防抖

    目录 一、引出 二、防抖函数 1.为什么需要防止抖动的原因 2.函数防止抖动的原理 3.防抖动代码函数实现 4.在小程序当中使用的防抖函数 三、节流函数 1.为什么需要节流的原因 2.函数节流的原理 3.节流函数代码的实现 四、区别与使用的场景 1.什么时候会用到节流函数和防抖函

    2024年02月04日
    浏览(88)
  • vue项目使用lodash节流防抖函数问题与解决

    在lodash函数工具库中,防抖 _.debounce 和节流 _.throttle 函数在一些频繁触发的事件中比较常用。 创建一个 debounced(防抖动)函数,该函数会从上一次被调用后,延迟  wait  毫秒后调用  func  方法。 参数 func   (Function) : 要防抖动的函数。 [wait=0]   (number) : 需要延迟的毫秒数。

    2024年02月08日
    浏览(42)
  • vue uniapp 防止按钮多次点击(类似于防抖节流)

    common文件并创建anti-shake.js文件 man.js文件中引入 页面里使用即可 不传参,直接传一个方法就行 带参数,传一个方法和一个参数就行 

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包