首页 > 其他分享 >js节流和防抖

js节流和防抖

时间:2023-04-26 09:44:32浏览次数:36  
标签:function 防抖 const 节流 self args timer js delay

节流(throttle): 指连续触发事件的函数,在一定时间间隔内只执行一次。

function throttle(fn, delay) {
  let timer = null;
  return function() {
    const self = this;
    const args = arguments;
    if (!timer) {
      timer = setTimeout(function() {
        timer = null;
        fn.apply(self, args);
      }, delay)
    }
  }
}

//使用
window.addEventListener('scroll', throttle(function() {
  console.log('scroll')
}, 1000))
防抖(debounce): 如果在一定时间内再次触发,就会取消上一的操作,重新执行最新的操作。

function debounce(fn, delay) {
  let timer = null;
  return function() {
    const self = this;
    const args = arguments;
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(function() {
      fn.apply(self, args);
    }, delay)
  }
}

//使用
window.addEventListener('input', debounce(function() {
  console.log('input')
}, 1000))

 

标签:function,防抖,const,节流,self,args,timer,js,delay
From: https://www.cnblogs.com/cnwp007/p/17354716.html

相关文章

  • js遍历对象属性
    1、遍历要给json对象varjsObj={"name":"張三","age":18}for(varkeyinjsObj){console.log("key:"+key+",val:"+jsObj[key])}2、遍历数组vararr=newArray();arr.push(11);arr.push(22);arr.push(33);arr.forEach(i......
  • mybatis与jstl异常汇总
    1,roblemaccessing/moviePlay/goMoviePlay/1/1/1.Reason:  /WEB-INF/views/workdetail.jsp(92,15)PWC6031:Unterminated<c:settagCausedby:org.apache.jasper.JasperException:/WEB-INF/views/workdetail.jsp(92,15)PWC6031:Unt......
  • Django之视图函数层 (必会三板斧 JsonResponse对象 request对象获取文件 FBV与CBV
    目录视图层之必会三板斧用来处理请求的视图函数都必须返回HttpResponse对象情况一:啥也不返回这里会报一个没有返回HttpResponse对象的错误,由此可见必须要返回一个HttpResponse对象情况二:返回HttpResponse对象点击Ctrl键查看源码可见是HttpResponse类,所以会返回一个值情......
  • okhttp3的基本使用(post发送json示例)
    依赖<!--https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp--><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><ve......
  • spring mvc3.2 requestbody json显示原理
    1,publicinterfaceHandlerMethodReturnValueHandler{ /** *Whetherthegiven{@linkplainMethodParametermethodreturntype}is *supportedbythishandler. * *@paramreturnTypethemethodreturntypetocheck *@return{@codetrue}ifthis......
  • Django框架——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、requ
    路由分发#Django支持每个应用都可以有自己独立的路由层、静态文件、模版层。基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起多个应用都有很多路由与视图函数的对应关系这个时候可以拆分到各自的路由层中使用路由分发之前总路由直接是路由与视图......
  • Three.js教程:Face3对象定义Geometry的三角形面
    推荐:将NSDT场景编辑器加入你的3D工具链其他系列工具:NSDT简石数字孪生Face3对象定义Geometry的三角形面几何体Geometry的三角面属性geometry.faces和缓冲类型几何体BufferGeometry顶点索引属性BufferGeometry.index类似都是顶点位置数据的索引值,用来组织网格模型三角形的绘制。......
  • 【Python】操作复杂嵌套的json数据
    1、相关文章递归获取所有key-value值:https://www.cnblogs.com/phoenixy/p/17126455.html 2、对复杂的json进行增删改查①获取数据#-*-coding:UTF-8-*-importjsonfromjsonpath_ngimportparsefromaa_demo.base.loggerimport*classjson_labor_tools:......
  • How use the RegExp to filter IP address in js All In One
    HowusetheRegExptofilterIPaddressinjsAllInOne如何使用RegExp在js中过滤IP地址192.168.18.1<192.168.18.N<192.168.18.255ignoreIPs:192.168.18.0/192.168.18.1/192.168.18.255errorfunctiontest(n){letreg=/192\.168\.(1?[0-9][0-......
  • JS中的继承
    使用classextends关键字js帮我们生成的继承关系图如果我们想要实现上面的继承关系,要注意以下问题:子类和父类的属性都在1中,怎么才能实现?子类的constructor属性指向子类,怎么才能实现?子类的原型方法和父类的原型方法,各自独立,分别在2和3中,怎么才能实现?解决方法子类和父类......