• javascript 函数节流 throttle 解决函数被频繁调用、浏览器卡顿的问题


    * 使用setTimeout

    index.html

    <html>
    <head>
    	<meta charset="UTF-8">
    	<title>throttle</title>
    </head>
    <body>
    	<h2>函数节流 解决函数被频繁调用、浏览器卡顿的问题</h2>
    	<script src="js/throttle.js"></script>
    </body>
    </html>
    

      

    js/throttle.js

    // 函数节流 解决函数被频繁调用、浏览器卡顿的问题
    var throttle = function(fn, interval) {
    	var __self = fn,       // 保存需要被延迟执行的函数引用
    		timer,             // 定时器
    		firstTime = true;  // 是否第1次被调用
    	return function() {
    		var args = arguments, __me = this;
    
    		// 如果第1次被调用, 不需要延迟执行
    		if (firstTime) {
    			__self.apply(__me, args);
    			return firstTime = false;
    		}
    		// 如果定时器还在, 说明前一次延迟执行还没有完成
    		if (timer) {
    			return false;
    		}
    		// 延迟一段时间执行
    		timer = setTimeout(function() {
    			clearTimeout(timer);
    			timer = null;
    			__self.apply(__me, args);
    		}, interval || 500);
    	}
    }
    
    var dom = document.createElement("h1");
    dom.innerHTML = 0;
    document.body.appendChild(dom);
    
    window.onresize = throttle(function() {
    	var n = parseInt(dom.innerHTML);
    	dom.innerHTML = ++n;
    }, 500);
    

      

    Run:

    php -S 0.0.0.0:9000

    调整浏览器窗口大小

  • 相关阅读:
    GIS的核心价值——服务
    Arcgis Add-In开发入门实例
    Arcgis for Androd API开发系列教程(一)——地图显示与GPS定位
    Spring
    字体大小对照换算表
    属性和字段的区别
    sqlDataAdapter和SqlCommand的区别
    C# 连接SQL Server数据库的几种方式--server+data source等方式
    c# using的作用
    random
  • 原文地址:https://www.cnblogs.com/mingzhanghui/p/9407694.html
Copyright © 2020-2023  润新知