js的监听屏幕滚动的节流和防抖方法

  • 节流:节流是从第一个点击开始算,在这段时间内,你点击多少次,就会执行多少次,但是只返回第一次的一个结果。过了这段时间,再次点击,才会再次点击的结果。节流相对于更保守一点,不易造成资源请求丢失。
  • 防抖:防抖是定时器等待时间计算过程中,频繁点击最后只执行一次,也就是说,在点击第一次的时候,定时器会有个等待时间,在这个等待时间中再次点击,他会替换掉第一次点击返回的结果,只执行这段时间中点击的最后一次事件。防抖能够有效避免资源浪费,节省存储空间。
    缺点:如果事件在指定时间间隔内被反复的触发,则事件会一直被延时到最后执行。
  • 节流实例:(适用于按钮点击事件)
window.addElementListener( 'scroll', this.scrollTo() );
scroll = () => {
  let preTime = new Date().getTime();  //获取时间毫秒数
  return () => {
    let nowTime = new Date().getTime();  //频繁操作都会执行此部事件
    if( nowTime - preTime > 1000 ){   // 只有间隔1s之后,才输出一次结果
      console.log('执行事件');
      preTime =  new Date().getTime();  // 更新历史时间
    }
  }
}
  • 防抖实例:(适用于监听屏幕滚动)
window.addElementListener( 'scroll', this.scrollTo() );
scroll = () => {
  let timeOut = null; // 初始化空定时器
  return () => {
    clearTimeOut( timeOut )   // 频繁操作,一直清空先前的定时器
     timeOut = setTimeOut( ()=>{  // 只执行最后一次事件
        console.log('执行事件')
      }, 1000 )
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。