防抖函数:
当持续触发事件,一定时间内没有再触发事件,事件处理函数才会再执行一次。
如果设定的时间到来之前,又一次触发了事件,就重新开始延时。
实际应用:
1、使用echarts时,改变浏览器宽度的时候,希望重新渲染。
2、echarts的图像,可以使用此函数,提升性能。
3、在输入框输入结束n秒后才进行搜索请求,n秒内输入新的内容时则重新计时。
例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>防抖函数</title>
</head>
<body>
<input type="text" id="input">
<script>
function debounce(callback, delay) {
// timer变量需要一直保存在内存中
let timer
return function (arg) {
clearTimeout(timer)
timer = setTimeout(function (){
callback(arg)
}, delay)
}
}
function fn(value) {
console.log(value)
}
//需要达到的效果:键盘抬起且1秒之内键盘没有再输入内容,才输出最后一次输入的内容
var input = document.getElementById('input')
var debounceFn = debounce(fn, 1000)
input.addEventListener('keyup', function(e){
debounceFn(e.target.value)
})
</script>
</body>
</html>
以上仅为个人学习笔记。