JavaScript 节流与防抖

发布于 2022-11-26 23:57:21 字数 1161 浏览 95 评论 0

应用场景

实际工作中,我们经常性的会通过监听某些事件完成对应的需求,比如:

  • 通过监听 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

如日中天

暂无简介

文章
评论
641 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文