什么是防抖和节流?有什么区别?如何实现?

发布于 2024-09-04 12:50:55 字数 991 浏览 42 评论 0

节流函数(每调用一次后在规定的时间 wait 内不可再次调用)

function throttle(callback,wait){
    let last = Date.now();
    return function(...args){
        if((Date.now() - last) > wait){
            callback.call(this,...args);
            last = Date.now();
        }
    }
}
  • 鼠标的点击事件,比如 mousedown 只触发一次
  • 监听滚动事件,比如是否滑到底部自动加载更多,用 throttle 判断
  • 比如游戏中发射子弹的频率(1 秒发射一颗)

防抖函数(在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时)

function debounce(callback, delay){
    let timer = null;
    return function(...args){
        if(timer) clearTimeout(timer);
        timer = setTimeout(function(){
            callback.apply(this, args);
        },delay)
    }
}
  • search 搜索,用户不断输入值时,用防抖来节约 Ajax 请求,也就是输入框事件
  • window 触发 resize 时,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

关于作者

攒眉千度

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

avyhlj

文章 0 评论 0

廾匸

文章 0 评论 0

自演自醉

文章 0 评论 0

臧立杰

文章 0 评论 0

mb_XvqQsWhl

文章 0 评论 0

鲜血染红嫁衣

文章 0 评论 0

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