1.通过回调函数复原按钮可点击(可用于限度发送http申请,即期待HTTP申请返回后执行回调复原按钮可点击)
节流函数:
/**按钮点击限度(自主设置可点击--函数节流)@param {Fun} callback 回调函数@return*/const btnlimit = function (callback) { var isDis return function (...arg) { if (!isDis) { isDis = true callback.call(this, arg, function () { isDis = false }) } }}
应用示例:
<template> <button @click="onSubmit">{{value}}</button></template><script> export default { data() { return { value: '发送HTTP申请' } }, methods: { onSubmit: btnlimit(function(e, callback) { //此处必须应用function 不能应用箭头函数 this.value += '1' setTimeout(()=> { callback() //此处回调执行后点击才会持续发送http申请 }, 2000) }) } }</script>
2.通过设置工夫复原按钮可点击(可用于限度频繁触发的dom事件,比方onscroll事件)
节流函数:
/** 按钮点击限度(设置工夫--函数节流) @param {Fun} callback 回调函数 @param {Number} time 间隔时间*/const btnlimit_time = function (callback, time) { var startTime return function (...arg) { if(!startTime){ startTime = new Date().getTime() callback.call(this, arg) } if(new Date().getTime() - startTime > time){ startTime = new Date().getTime() callback.call(this, arg) } }}
应用示例:
<template> <button @click="onSubmitTime">{{value}}</button></template><script> export default { data() { return { value: 'dom事件' } }, methods: { onSubmitTime: btnlimit_time(function(e) { //此处必须应用function 不能应用箭头函数 this.value += '1' }, 400) } }</script>