当前位置: 首页 > news >正文

函数防抖和节流

    所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,

    如果在 n 秒内又触发了事件,则会重新计算函数执行时间,

    短时间高频率触发只有最后一次触发成功

    开发使用场景: 搜索框防抖

 fn代表要被防抖或者节流的函数,所以都是要执行的

var debounce = function (fn, t) {
    let timeOut;
    return function (...args) {
        //防抖在规定时间只会执行一次,频繁点击都会重新计时,所以每次都先清楚上一次的定时器
        clearTimeout(timeOut);
        timeOut = setTimeout(() => {
            fn(...args)
        }, t)
    }
}

// 所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数

/*

开发使用场景:

小米轮播图点击效果、鼠标移动、页面尺寸缩放 resize、滚动条滚动就可以加节流

*/

function throttle(fn, delay) {
    let timeOut;
    return function (...args) {
        if (!timeOut) {
            timeOut = setTimeout(() => {
                //在 Node.js 中,它们都无法获取,必须使用 global。
                //globalThis 提供了一个标准的方式来获取不同环境下的全局 this 对象(也就是全局对象自身)。
                //不必担心它的运行环境。
                //全局作用域中的 this 就是 globalThis。
                console.log(this == globalThis) //true
                fn.apply(this, args)
                timeOut = null;
            }, delay)
        }
    }
}

相关文章:

  • AI 语言模型发展史:统计方法、RNN 与 Transformer 的技术演进
  • Spring Boot01(注解、)---java八股
  • 001-监控你的文件-FSWatch-C++开源库108杰
  • Typora导出word文件详细安装教程
  • 使用 Dify + DeepSeek 打造自己的本地知识库问答
  • 框架ThinkPHP(小迪网络安全笔记~
  • 计算机组成原理—— 外围设备(十三)
  • 配置Open-R1,评测第三方蒸馏模型的性能2
  • 2025百度快排技术分析:模拟点击与发包算法的背后原理
  • 一个简单的ubuntu/开发板初始化脚本
  • Redis 09章——哨兵(sentinel)
  • HTML元素
  • MATLAB中lookBehindBoundary函数用法
  • 滑动窗口——优先队列写法
  • 分享一个解梦 Chrome 扩展 —— 周公 AI 解梦
  • sql盲注脚本
  • 【数据结构入门 65 题】目录
  • 字符串(典型算法思想)—— OJ例题算法解析思路
  • Anaconda3 介绍和安装
  • 静默安装OGG for MySQL微服务版本,高效开展数据同步和迁移
  • 普京提议于15日在土耳其恢复俄乌直接谈判
  • 巴西总统卢拉将访华
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 2025世界数字教育大会将于5月14日至16日在武汉举办
  • 中日有关部门就日本水产品输华问题进行第三次谈判,外交部回应