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

    };

  • 相关阅读:
    谷歌浏览器(Google Chrome)开发调试详细介绍
    Js调试技巧
    Spring框架集成FreeMarker
    Spring MVC + freemarker实现半自动静态化
    Django学习路4_数据库添加元素,读取及显示到网页上
    数据库设计基础知识
    Django创建简单数据库
    list 和 [ ] 的功能不相同
    Django坑_01
    爬虫流程复习3
  • 原文地址:https://www.cnblogs.com/bug-master/p/6196362.html
Copyright © 2011-2022 走看看