zoukankan      html  css  js  c++  java
  • 前端去抖和节流

    去抖

    在一段时间内同一个时间触发了很多次,规定一定的时间 的多次点击事件延迟执行,最终只触发一次

    // 250 毫秒内点击多次只有最后一次生效
    var d = undefined
    var debouncing = function(){
    	clearTimeout(d)
    	d = setTimeout(()=>{
    		console.log("do some ting")
    	},250)
    } 
    

    相关方法

    • Lodash
      • debounce()

    参考:https://www.lodashjs.com/docs/lodash.debounce#_debouncefunc-wait0-options

    // 避免窗口在变动时出现昂贵的计算开销。
    jQuery(window).on('resize', _.debounce(calculateLayout, 150));
     
    // 当点击时 `sendMail` 随后就被调用。
    jQuery(element).on('click', _.debounce(sendMail, 300, {
      'leading': true,
      'trailing': false
    }));
     
    // 确保 `batchLog` 调用1次之后,1秒内会被触发。
    var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
    var source = new EventSource('/stream');
    jQuery(source).on('message', debounced);
     
    // 取消一个 trailing 的防抖动调用
    jQuery(window).on('popstate', debounced.cancel);
    

    节流

    定期检查事件是否在 【这个时间段】中触发,如果触发次数超过【指定次数】就不执行。

    相关方法

    • Lodash
      • throttle()

    参考:https://www.lodashjs.com/docs/lodash.throttle#_throttlefunc-wait0-options

    // 避免在滚动时过分的更新定位
    jQuery(window).on('scroll', _.throttle(updatePosition, 100));
     
    // 点击后就调用 `renewToken`,但5分钟内超过1次。
    var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
    jQuery(element).on('click', throttled);
     
    // 取消一个 trailing 的节流调用。
    jQuery(window).on('popstate', throttled.cancel);
    
    
  • 相关阅读:
    团队冲刺第四天
    团队冲刺第三天
    团队冲刺第二天
    冲刺(六)
    冲刺(五)
    冲刺(四)
    冲刺(三)
    冲刺(二)
    冲刺(一 )
    第一阶段SCRUM
  • 原文地址:https://www.cnblogs.com/zjhblogs/p/14277364.html
Copyright © 2011-2022 走看看