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);

    };

  • 相关阅读:
    032 代码复用与函数递归
    031 实例7-七段数码管绘制
    030 函数的定义与使用
    029 函数和代码复用
    2.4 Buffer
    2.3 字符串链接
    2.2 去除字符串特别字符
    2.1 字符串查询
    存储数据_文件读写
    template模板
  • 原文地址:https://www.cnblogs.com/bug-master/p/6196362.html
Copyright © 2011-2022 走看看