1.
2.定义变量保存每次点击的时间,上次和当前次点击的时间间隔小于某个时间,就return掉,否则就继续之后步骤,类似于
this.state={clickTime:new Date().getTime()}
buyCard(){
var {clickTime} =this.state
var nowTime = new Date().getTime()
if( clickTime != 'undefined'&& (nowTime - clickTime <500)){
return false
}else{
this.setSate({clickTime:nowTime})
.....
}
}
在进行窗口的resize、scroll,输入框内容校验,防止按钮重复点击等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担,体验糟糕。所以可以采用debounce(防抖)和throttle(节流)的方式来减少调用频率,同时又不影响实际效果。我们一起先来看看防抖和节流的区别
防抖函数 debounce
节流函数 throttle
如何调用
防抖和节流都利用了闭包,首先就调用了debounce和debounce方法,把内部的方法返回出去,下次自己执行,以后有时间我再写一下闭包吧,所以我还留下一个问题,这样会不会造成内存泄漏?
1.防止重复点击可以添加标记,第一次点击后变为false,每次点击判断这个标记是true才执行
2.如果是按钮防止重复点击,可以再按钮点击后,给按钮添加disabled属性,按钮就再也点击不了
举个例子:
<!doctype html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<button onclick="fn()">方式一</button>
<button onclick="alert('只会出现一次哦,之后想点都点不了')this.disabled = true">方式二</button>
<body>
<script>
//第一种方式
var flag = true
function fn(){
if(flag){
flag = false
alert('只会出现一次哦')
}
}
</script>
</body>
</html>