支付宝小程序中防止快速点击提交按钮
在写小程序提交表单的时候,快速点击提交按钮会提交多次,想到要使用‘防抖’(debounce) 和 ‘节流’(throttling),这两个具体的概念用法在网上都可以查到,这篇文章分享的是我在小程序中,根据原理简单的实现多次点击只能提交一次
大致原理:有一个起始时间starttime,点击按钮会记录一个时间为lasttime,time为lasttime-starttime,当点击第一次以后程序运行,计时器结束时会将起始时间更新为本次点击的时间,快速点击时,时间间隔time变短,低于一定时间不会做出反应,只有时间差大于指定时间才能够去执行函数
data中设置下面三个值
starttime:0,
lasttime:'',
time:1002
click(){
//小程序中获取时间戳的方法
my.getServerTime({
success: (res) => {
this.setData({
lasttime:res.time,
})
},
});
var timer=setTimeout(()=>{
this.setData({
time:this.data.lasttime-this.data.starttime
})
if(this.data.time>1000){
console.log(this.data.time)
this.Request()//要执行的函数
clearTimeout(timer);
timer=null;
}
this.setData({
starttime:this.data.lasttime
})
},500);
}
这只是在单个页面中实现,想要在多个页面中引入,我们可以写个公共函数,具体写法参考一下别人的吧
编程五分钟,调试两小时...