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是个高阶函数,参数输入是个函数【该频繁调用的函数】以及触发时间,第一次触发有个只执行一次的方法,后面接着就是定时器触发函数。节流函数的本质就是利用定时器的延迟进行函数触发。

    【完】

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

  • 相关阅读:
    jenkins安装
    HTTP协议客户端是如何向服务器发送请求
    接口概念
    fiddler导出har格式转化成yml格式

    双硬盘双系统装错了记录
    chrome的版本和driver版本对应表
    monkey详解
    adb命令熟悉
    cookie、session、token
  • 原文地址:https://www.cnblogs.com/tangjiao/p/9915537.html
Copyright © 2011-2022 走看看