vue实现节流,控制按钮点击次数,避免被频繁点击

我看网上别人写的方法怎么逻辑都不对啊,自己改了改

需求:有一个更新按钮,点击后大概需要一分多钟更新列表,所以不希望五分钟内被频繁点击

流程:点击更新按钮→五分钟内再点按钮即出现弹窗提醒:五分钟内不要点击→五分钟结束后,可重新点击,重新计时五分钟

代码:

这里是一个按钮,绑定update方法

data() {
    timer: null //定时器
}
beforeDestroy() { //记得销毁定时器
    clearInterval(this.timer)
    this.timer = null
}
update(){
	if(this.timer){
		//这里是弹窗告警语句,当五分钟之内点击会执行
	}else{
		this.updateList() //执行更新列表的函数
		console.log('启动定时器')
		this.timer = setTimeout(()=>{
			console.log('清除定时器')
			clearTimeout(this.timer)
			this.timer = null
		}, 300000)
	}
}

整体思路就是,点击按钮的时候,如果此时定时器是null,说明是安全的,即执行更新函数,并且启动定时器,设置在定时结束后清除定时器,定时器重置为null;如果点击按钮时定时器不是null,则弹窗警告,不执行更新函数

需要知道的是

this.timer = setTimeout(()=>{
	//这里的代码是定时器计时结束后执行,而不是定时开始执行
}, 300000)  //这里1000是1秒

如果不清楚写出来的执行效果,可以多写几个输出语句观察一下
另外,这个定时器的弊端就是刷新页面会后重置,而切换页面不会重置


版权声明:本文为wushang1102原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。