zoukankan      html  css  js  c++  java
  • 函数节流

    function delayFn2 (fn, delay, mustDelay){
         var timer = null;
         var t_start;
         return function(){
             var context = this, args = arguments, t_cur = +new Date();
             //先清理上一次的调用触发(上一次调用触发事件不执行)
             clearTimeout(timer);
             //如果不存触发时间,那么当前的时间就是触发时间
             if(!t_start){
                 t_start = t_cur;
             }
             //如果当前时间-触发时间大于最大的间隔时间(mustDelay),触发一次函数运行函数
             if(t_cur - t_start >= mustDelay){
                 fn.apply(context, args);
                 t_start = t_cur;
             }
             //否则延迟执行
             else {
                 timer = setTimeout(function(){
                     fn.apply(context, args);
                 }, delay);
             }
         };
    }
    var count=0;
    function fn1(){
        count++;
        console.log(count)
    } 
    //100ms内连续触发的调用,后一个调用会把前一个调用的等待处理掉,但每隔200ms至少执行一次
    document.onmousemove=delayFn2(fn1,100,200)
    

      

  • 相关阅读:
    npm配置国内源方法
    数据库—事务—隔离级别
    Mybatis—日志
    Mybatis—动态 SQL
    Mybatis—mapper.xml配置文件
    declare命令
    shell杂项
    流程控制语句
    第一篇博客
    Linux 命令[2]:mkdir
  • 原文地址:https://www.cnblogs.com/xzma/p/8026413.html
Copyright © 2011-2022 走看看