首页 > 其他分享 >防抖与节流

防抖与节流

时间:2024-02-13 18:55:52浏览次数:27  
标签:function 防抖 节流 timer ajax fn wait

  • 防抖与节流的本质就是:通过闭包特性减少操作次数

  • 举一个现实生活中的例子

 // 两个大巴的故事
 // 防抖,
 // A大巴:车上上去一个人,五分钟之内不上人,发车。
 // 节流。
 // B大巴:车上上去一个人之后,五分钟之后发车。

 // 发车!网络请求(A => B) 提高利用率 减少B的压力。

 // 防抖:举个例子 从第一个字母开始,.5s 没有文字输入,发送请求。 
       // fn 具有防抖函数,wait 时间间隔, 返回的函数,跟fn具有同样的功能,具有防抖的特性,更多应用场景 鼠标移动,滚动条。
       function debounce(fn, wait) {
           let timer = null;
           return function (...arg) {
               clearTimeout(timer);
               timer = setTimeout(() => {
                   fn(...arg);
               }, wait);
           }
       }

       var input = document.getElementById('inp');
       function ajax (e) {
           console.log('发送数据'+ e.target.value);
       }
       input.oninput = debounce(ajax, 500)
  
   // 节流。
     // fn要执行,等待wait时间后在执行fn
     function throttle(fn, wait) {
            let timer = null;
           // 返回函数执行:车上人
           return (...arg) => {
               // 如果没有开启定时器,开启一个
               if (!timer) {
                   // 到时间发车
                   timer = setTimeout(function () {
                       fn(...arg);
                       timer = null;
                   }, wait); 
               }
           }
       }

       var _ajax = throttle(ajax, 2000);
       input.oninput = _ajax

标签:function,防抖,节流,timer,ajax,fn,wait
From: https://www.cnblogs.com/bingquan1/p/18014713

相关文章

  • 浅谈闭包(防抖,节流,函数柯里化)
    闭包参考文章谈谈你对闭包的理解概念:(1)闭包就是引用了另一个函数的变量的函数(2)闭包一般是函数嵌套,一个函数返回另外一个函数,内部函数访问外部函数的变量就形成了一个闭包作用(优点):(3)闭包的优点是可以私有化变量,将变量私有化到函数内部,并在私有化的基础上进行数据保持......
  • 防抖
    function debounce(func, delay) {    let timerId;      return function() {        clearTimeout(timerId); // 清除之前设置的计时器              const context = this;        const args = arguments;  ......
  • js封装防抖函数
    js封装的防抖函数/**防抖函数*@param{Function}func*@param{number}wait*@param{boolean}immediate*@return{*}*/exportfunctiondebounce(func,wait,immediate){lettimeout,args,context,timestamp,resultconstlater=function(){......
  • 防抖节流的应用场景
    1.防抖:表单验证:当用户在输入框中输入内容时,可以使用防抖来延迟验证用户输入的内容,减少验证的频率。按钮点击:当用户频繁点击按钮时,可以使用防抖来确保只有最后一次点击生效,避免重复提交或触发不必要的操作。搜索框自动补全:当用户在搜索框中输入关键字时,可以使用防抖来延迟发送请求,减......
  • 浪潮服务器CPU触发自动节流
    什么是CPU自动节流?服务器在运行过程中,随着CPU使用率变高,会耗费更多的电,产生更多的热量导致温度升高。当达到一定程度的时候,会触发自动节流,相当于设备的自我保护,服务器性能会降低。 服务器会亮告警灯,就算是自动节流解除,告警仍在,需要手动清楚日志,然后重启BMC。BMC菜单下,找到"......
  • 字符流 字节流 多线程
     字符流和字节流:字符流用于处理字符数据,每次读写一个字符,适用于文本文件。字节流用于处理字节数据,适用于二进制文件。InputStream和OutputStream是字节流的基类。Reader和Writer:Reader和Writer是字符流的抽象基类。它们提供了读写字符数据的方法。Output......
  • JavaScript手搓"防抖"优化代码
    一、为什么要防抖就好比我们想象一个场景:当我们在使用我们的页面,我们页面有一个提交数据的按钮!我们每次点击提交按钮,都会向我们的后端服务器发送一个请求!接下来我们来构建一下这样一个简单的页面!<buttonid="submit">提交</button><script>letsub=document.getEle......
  • 字节流写数据练习
    方法概述方法名说明voidwrite(intb)将指定的字节写入此文件输出流一次写一个字节数据voidwrite(byte[]b)将b.length字节从指定的字节数组写入此文件输出流一次写一个字节数组数据voidwrite(byte[]b,intoff,intlen)将len字节从指定的字......
  • vue3中自定义ref实现防抖
    import{customRef}from"vue";/***@description自定义ref实现防抖*@param{String}value*@param{Number}delay*@returns*/exportconstdebounceRef=(value,delay)=>{lettimer;returncustomRef((track,trigger)=>({......
  • 简单了解java中的io流中的字节流
    了解一下前置知识字符集,我们常见的字符集有ASCII,GBK,UTF-8GBK中一个字需要两个字节存储UTF-8中一个字母需要一个字节,并以0开头,一个汉字需要三个字节,与GBK不同的是,他支持的是世界文字,是一种相当通用的字符集IDEA中的字符集在右下角可以看到,默认是utf-8,在java中进行编码和解码......