节流
快速点击按钮,无论你点多快,结果都以固定频率输出,降低打印频率。
实现思路:
先将节流阀(flag)打开,当发生鼠标点击事件之后,判断节流阀的状态,然后立马关闭节流阀,再设置一个定时器,让节流阀以固定时间(频率)打开。
来看代码实现
<button>点我</button>
<script>
var btn = document.querySelector('button')
var flag = true
btn.onclick = function () {
if (flag) {
flag = false
console.log('fasongqingqiu')
setTimeout(() => {
flag = true
}, 1000);
}
}
</script>
防抖
快速点击按钮,无论你点多快,只会打印一次
实现思路:
先清除掉上一个定时器内容,然后开启新的定时器,需要注意的是,这里需要提前准备一个全局变量timer,以实现clearTimeout的首次清除
来看代码实现
<button>点我</button>
<script>
var btn = document.querySelector('button')
var timer = null
btn.onclick = function () {
clearTimeout(timer)
timer = setTimeout(() => {
console.log('发送请求了')
}, 1000);
}
</script>