js节流防抖
1、防抖原理:
防止频繁无效的请求,每一次的请求都会等待一定的时间,看一看有没下一次的请求,如果有就不执行上一次的请求,在重新等待一定时间,在一定的时间内没有新的请求操作,就执行请求操作。
例如:搜索功能,我们搜索hello,不应行向服务器发送5次请求,所以我们需要在一定的时间里监听用户是否还在输入,如果还在输入,我们就不向服务发送请求,如果一定的时间段内,没有输入操作,再将搜索框内的信息发送给服务器。
这也就可以减少很多不必要的请求,从而减少服务器的压力
应用场景:1、scroll时间滚动触发 2、搜索框搜索 3、表单验证 4、按钮提交事件 5、浏览器窗口缩放
代码:
function debounce(hander, delay) { let timer = null; return function(...args) { clearTimeout(timer); timer = setTimeout(()=> { hander.apply(this,args); }, delay); }; }
2、节流原理
如果连续触发一个事件,每隔一点=段时间,只触发一次。
代码:
function throttle(habder, wait) { let lastTime = 0; return function (e) { let nowTime = new Date().getTime(); if (nowTime - lastTime > wait) { habder.apply(this, arguments); lastTime = nowTime; } }; }