JS函数防抖
Posted _Junjun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS函数防抖相关的知识,希望对你有一定的参考价值。
当你在输入框每输入一个字符的时候
百度都会不断的根据当下的输入给予新的提示
那么,如果有一个人打字速度非常快
输入了helloworld这个单词 只用了200ms
这是键盘事件函数被触发了10次
我们把这个称为 函数抖动
他每按下一次键盘 浏览器都会向服务器做一次查询
连续触发了10次请求,显示对这个手速特别快的人 这不是他想要的。
我们至少浪费了9次查询 增加了服务器的压力。
解决思路是这样的:
当用户按下键盘后 不要立即向服务器发起请求,
等待300ms,如果没有继续输入 说明输入内容完毕
这时候在向服务器发送请求。
就大大的避免了浪费
例子:
// 这是未做防抖处理的代码:
inputEle.addEventListener("keyup", function(e){
//ajax(...); 发送请求到服务器
})
// 这是做了防抖处理的代码
this.$refs.inputEle.addEventListener(
"keyup",
(function (e) {
//这是一个自运行函数
var t = null;
return function () {
//真正的事件函数在这里
clearTimeout(t); //每次触发,都把前面的定时器关闭,尽管第一次定时器并不存在
t = setTimeout(function () {
//开启新的定时器
//ajax(...); 发送请求到服务器
console.log("抖动");
}, 300);
};
})()
);
},
都有哪些应用场景?
- search搜索联想,用户在不断输入值时,用防抖来节约请求资源。
- window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次
以上是关于JS函数防抖的主要内容,如果未能解决你的问题,请参考以下文章