美文网首页
函数节流

函数节流

作者: 萘小蒽 | 来源:发表于2019-04-17 10:17 被阅读0次

    浏览器中DOM操作比起非DOM交互需要更多的内存和CPU时间,比如输入框的oninputkeyuponresizescroll等事件。其高频率的触发事件可能会让浏览器崩溃,为了解决这个问题,可以使用定时器对该函数进行节流。

    基础形式:

    var processor = {
       timeoutId : null,
       //实际进行处理的方式
       performProcessing: function(){
           //实际执行的代码
        },
       process: function (){
          clearTimeout(this.timeoutId);
          this.timeoutId = setTimeout(()=>{
             this.performProcessing()
          },1000);
       }
    }
    //尝试开始执行
    processor.process();
    
    • 上面processor.process()方法就算被频繁的调用,performProcessing()也只会每过1S的执行一次。
    • 只要代码是周期性频繁执行的,应该使用节流来限制。

    简化模式:

    function throttle(fn, context){
        clearTimeout(fn.timeoutId);
        fn.timeoutId = setTimeout(()=>{
           fn.call(context)
         },1000)
    }
    
    • 简化模式的throttle()接收两个参数:context(要执行的方法),fn(执行的作用域)

    相关文章

      网友评论

          本文标题:函数节流

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