• JS防抖和节流模式的实际应用


    防抖

    首先我们先讲讲防抖,一个时间在n秒内触发了很多次,我们只执行一次,总之就是等事件触发完n秒不再触发,才执行

    /**
    * @desc 函数防抖
    * @param func 函数
    * @param wait 延迟执行毫秒数
    */

    function debounce(func, wait) {

      let timeout;

      return function() {

        let context = this;  // this指向

        let args = arguments;

        if(timeout)  clearTimeout(timeout);

        timeout = setTimeout(() => {

          func.apply(context);

        }, wait);

      }

    }

      下面让我们开尝试调用一下

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<input type="text" id="inputDom"/>
    	</body>
    </html>
    
    <script type="text/javascript">
    
        
    	var content = document.getElementById('inputDom');
    
    	function press() {
    		console.log("开始输入了");
    	}
    
    	content.debounce= function (){
    		throttle(press, 500);
    	}
    
    </script>
    

      可以看到,当连续输入内容,在500毫秒内只发一次,这就达到了防抖的效果了。

    节流

     持续触发某一事件,每隔n秒执行一次。关于节流的实现,有两种主流的实现方式,一种是使用时间戳,一种是设置定时器。

    使用定时器

    /**
    * @desc 函数节流
    * @param func 函数
    * @param wait 延迟执行的毫秒数
    */
    
    function throttle(func, wait) {
        let timeout;
        return function() {
            let context = this;
         let args = argumetns; 
        
    if(!timeout) {
           timeout = setTimeout(() => {
            timeout = null;
            func.apply(context, args)
           }, wait)     
    } } }

    使用时间戳  

    /**
    * @desc 函数节流
    * @param func 函数
    * @param wait 延迟执行的毫秒数
    */
    
    function throttle(func, wait) {
        let previous = 0;
        return function() {
            let now = Date.now();
            let context = this;
    	let args = arguments;
            if(now - previous >wait) {
                func.apply(context, args);
    	    previous = now
            } 
        }
        
    }	          
  • 相关阅读:
    unity,C#,游戏面试笔试真题
    鼠标实现物体的移动
    UnityScript基础
    CocosCreator上的游戏(调试)发布到微信小程序
    Unity之与Web的交互
    unity之Layer作用
    unity_数据结构(常见数据结构及适用场景)
    unity之初级工程师
    虚拟机中安装GHO文件配置说明
    windows下tomcat的安装配置
  • 原文地址:https://www.cnblogs.com/linxing/p/10984181.html
Copyright © 2020-2023  润新知