美文网首页
js 防抖动

js 防抖动

作者: 日不落000 | 来源:发表于2019-11-21 16:49 被阅读0次

问题:针对频繁触发scoll resize绑定的事件函数,有可能短时间多次触发时事件,影响性能。
思路:多个函数调用合成一次,给定时间后仅调用最后一次

  
  // 包装事件的debounce函数
  debounce = (func, delay)=>{
    let timer = null;    
    console.log('this,',this);

    const _that = this;
    return function(){
      console.log('this,',this);
      console.log('_that,',_that);
      let context = _that; // 通过 ‘this’ 和 ‘arguments’ 获取函数的作用域和变量
      let args = arguments; 
      clearTimeout(timer);
      timer = setTimeout(()=>{
        func.apply(context, args);
      }, delay)
    }();
  }

  // 当用户滚动时被调用的函数
  foo = ()=>{
    console.log("todo somethind");
    console.log('this,',this);
  }
  
  handleScroll = () => {
      // 元素绑定scoll事件,触发包装函数debounce
    this.debounce(this.foo, 100);

  }
  
  componentWillUnmount() {
    window.removeEventListener('scroll', this.handleScroll);
  }

  componentDidMount = async () => {

    window.addEventListener('scroll', this.handleScroll);
  }
  

参考:
https://codepen.io/ribuluo000/pen/MWgqpZV

相关文章

  • JS 防抖动

    point:闭包 apply call (...param)

  • js 防抖动

    问题:针对频繁触发scoll resize绑定的事件函数,有可能短时间多次触发时事件,影响性能。思路:多个函数调用...

  • JS debounce 防抖动

    以下场景往往由于事件频繁被触发,因而频繁执行DOM操作、资源加载等重行为,导致UI停顿甚至浏览器崩溃。 windo...

  • 图解防抖动与节流模式

    防抖动 防抖动立即触发 防抖动 节流 节流立即触发 节流 总结 防抖动:将多个操作合并为一个操作(例如,键盘输入关...

  • RxJava<第二十五篇>:功能防抖(防暴力点击)

    网上有大量的防抖动措施,基本类似。 下面我来通过RxJava实现防抖动(防暴力点击) RxBinding和thro...

  • 前端节流(throttle)和防抖动(debounce)

    上一期是 JS 高阶函数的入门,这一期再来谈谈高阶函数在前端最常见的两个应用——节流和防抖动 节流(throttl...

  • 简单的防抖动函数

    // 简单的防抖动函数 function debounce(func, wait, immediate) { //...

  • Android 这才是实现防抖动(防快速点击)的最优雅写法

    开篇 这篇我们要弄清楚以下两个问题: 1、为什么要做防抖动点击?   做防抖动点击的目的很简单:我们需要追求更高更...

  • ts防抖节流

    防抖动和节流本质是不一样的。防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。 使用

  • 防抖和节流

    区别:防抖动和节流本质是不一样的。防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行 出现场...

网友评论

      本文标题:js 防抖动

      本文链接:https://www.haomeiwen.com/subject/ypffuctx.html