zoukankan      html  css  js  c++  java
  • 你不知道的函数节流,提高你的JS性能!

    浏览器的DOM计算处理非常耗费CPU时间,霸占内存,这对我们的开发来说是非常不友好的,,比如IE浏览器的onresize事件就可能在用户稍微拖动一下窗口时计算上千次,甚至更高频率直接让浏览器崩溃。。。

    手写过轮播图的同学都知道节流阀的存在,那么函数节流亦是如此(参考高程):

    var processor = {

           timeoutId :null,

           // 实际进行处理的方法

           performProcessing: function(){

          // 实际执行的代码

          },

          // 初始化处理调用的方法

         process:function(){

            clearTimeout(this.timeoutId);

            var   that=this;

            this.timeoutId=setTimeout(function(){

                    that.performProcessing();

            },100);

         }

    };

    基本思想是:一个连续执行的函数被强制每100毫秒执行一次

    下面是用throttle()函数来简化,可以自动进行定时器的设置与清除:

    function throttle(method,context){

             clearTimeout(method,tId);

             method.tId=setTimeout(function(){

                    method.call(context);

             },100);

    }

    怎么用呢?就是这么简单粗暴

    function myFunction(){

          //your idea

    }

    window.onresize = function(){

            throttle(myFunction);

    };

  • 相关阅读:
    Windows Vs2010 + Qt5
    Java基础1
    关键字volatile
    内联函数
    Const详解2
    模板特化
    引用
    旧代码中的"enum hack"
    angularjs之ngoption
    angularjs之向下一个页面传参
  • 原文地址:https://www.cnblogs.com/bug-master/p/6196362.html
Copyright © 2011-2022 走看看