JavaScript 节流与防抖
应用场景
实际工作中,我们经常性的会通过监听某些事件完成对应的需求,比如:
- 通过监听 scroll 事件,检测滚动位置,根据滚动位置显示返回顶部按钮
- 通过监听 resize 事件,对某些自适应页面调整 DOM 的渲染(通过 CSS 实现的自适应不再此范围内)
- 通过监听 keyup 事件,监听文字输入并调用接口进行模糊匹配
函数防抖
定义:多次触发事件后,事件处理函数只执行一次,并且是在触发操作结束时执行。 原理:闭包
防抖函数的封装使用
function debounce (fuc, delay) {
let timer;
return function () {
let arg = arguments,
_this = this;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
fuc.apply(_this, ...arg);
clearTimeout(timer);
}, delay);
}
}
函数节流
定义:每隔一段时间,只执行一次函数。 原理:闭包
节流函数的封装使用
function throttling (fuc, delay) {
let lastTime;
return () => {
let newTime = Date.now(),
_this = this;
if (!lastTime || newTime - lastTime > delay) {
lastTime = Date.now();
fuc.apply(_this, ...arguments);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论