输入提示防抖处理

经常会有输入提示这种需求 , 输入一个字符 提示出相应的可能提示搜索词,这种需求也很普遍了。

但是没输入一个字符 就要发送一次请求,那是很浪费服务器资源的,稍加处理就可以避免了。

防抖处理 , 也叫 debounce , 在underscore.js中就有这样一个debounce函数,下面将实现一个简单的防抖函数:

1
2
3
4
5
6
7
8
var timer = null;
function debounce(){
console.log("start")
clearTimeout(timer);
timer = setTimeout(function(){
console.log('发送请求,获取数据并且展示')
},500);
}

类似的,为了限制某一段时间内发出请求的数量,在滚动浏览器页面时,可能滚动一次 调用了很多个函数,为了限制这种情况,在 underscore.js 中有一种叫函数节流的方式 throttle。

Lodash

如果需要 debounce 和throttle 这两个方法,可以使用lodash来将两个方法合成一个文件。

lodash

压缩后的文件还是很小的。

参考

https://segmentfault.com/a/1190000002764479
http://jinlong.github.io/2016/04/24/Debouncing-and-Throttling-Explained-Through-Examples/