zoukankan      html  css  js  c++  java
  • 防抖和节流

    首先要理解防抖函数的定义:当函数被连续调用时,并不执行设定的动作,只有当停止调用函数一段时间后才执行一次设定的动作.就像上电梯的时候,大家在上电梯的过程中门一直处于开的状态,只有当没有人上电梯一段时间后,电梯才会关门。

    本例使用滚动事件为例

    var $card = document.getElementById('card')
    function scrollHandle(e) {
        console.log(e)    // 
        console.log(this) // 
    }
    $card.addEventListener('scroll', throttle(scrollHandle,1000))
    // 先触发动作
    function debounce1(func, wait) {
        var timeout; // 标记
        return function() {
            var that = this;
            var arg = arguments;
            timeout&&clearTimeout(timeout);
            !timeout && func.apply(that,arg)
            timeout = setTimeout(function(){timeout = null}, wait) 
        }
    }
    // 后触发动作
    function debounce2(func, wait) {
        var timeout; // 标记
        return function() {
            var that = this;
            var arg = arguments;
            timeout&&clearTimeout(timeout);
            timeout = setTimeout(function(){func.apply(that,arg)}, wait) 
        }
    }

    节流就是节约流量,将连续触发的事件稀释成预设的频率.无论这期间触发多少次事件,都是按照预设的频率执行

    // 先触发动作
    function throttle1(func, wait) {
        var timeout;
        return function() {
            var that = this;
            var arg = arguments;
            if(!timeout){
                func.apply(that,arg);
                timeout = setTimeout(function() {
                    clearTimeout(timeout);
                    timeout = null;
                }, wait)
            } 
        }
    }
    
    // 后触发动作
    function throttle2(func, wait) {
        var timeout;
        return function() {
            var that = this;
            var arg = arguments;
            !timeout&&(timeout = setTimeout(function() {
                clearTimeout(timeout);
                timeout = null;
                func.apply(that,arg);
            }, wait))
        }
    }
  • 相关阅读:
    用c写一个小的聊天室程序
    socket相关的开机初始化分析
    HTML——CSS3学习
    iOS--OCR图片识别
    iOS学习——Socket
    iOS学习——数据加密
    iOS学习——并发编程GCD
    iOS学习——weak的应用场景
    iOS学习——RUNLOOP、NSTimer
    iOS学习——锁
  • 原文地址:https://www.cnblogs.com/nicederen/p/12618899.html
Copyright © 2011-2022 走看看