zoukankan      html  css  js  c++  java
  • 简单的节流函数throttle

    在实际项目中,总会遇到一些函数频繁调用的情况,比如window.resize,mouseover,上传进度类似的触发频率比较高的函数,造成很大的性能损耗,这里可以使用节流函数来进行性能优化,主要是限制函数被频繁调用的解决方案: 

    let throttle = function(fn,interval){
        let __self = fn,timer,firstTime = true;
        return function(){
            var args = arguments,__me = this;
            if(firstTime){
                __self.apply(__me,args);
                return firstTime = false;
            }
            if(timer){
                return false;
            }
            //先执行了一次,firstTime是false,然后500毫秒之后利用定时器再次执行。
            timer = setTimeout(function(){
                clearTimeout(timer);
                timer = null;
                __self.apply(__me,args);
            },interval||500)
        }
    }
    
    window.onresize = throttle(function(){
        console.log(1)
    },500)

    此函数可以触类旁通,throttle是个高阶函数,参数输入是个函数【该频繁调用的函数】以及触发时间,第一次触发有个只执行一次的方法,后面接着就是定时器触发函数。节流函数的本质就是利用定时器的延迟进行函数触发。

    【完】

    后来我才知道,他并不是我的花。只是我恰好途径了他的盛放。

  • 相关阅读:
    矩阵乘法
    年关了,抛一个模拟ip刷票的php程序
    mysql处理大数据合并的另一种方法
    php之aop实践
    轻量级php框架phpk v1.0发布
    eclipse
    super关键字的使用
    方法的重写
    方法的重载
    java 构造器 (构造方法)
  • 原文地址:https://www.cnblogs.com/tangjiao/p/9915537.html
Copyright © 2011-2022 走看看