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

    首先要知道什么场景用防抖,什么场景用节流

    函数防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。

    应用场景:

    1.登录、注册按钮避免用户点击太快,以致于发送了多次请求,需要防抖

    2.mousemove、mouseover鼠标移动事件防抖

    函数节流:控制事件发生的频率,如控制为1s发生一次,甚至1分钟发生一次。

    应用场景:

    1.scroll 事件,滚动监听事件,每隔一秒计算一次位置信息等

    2.高频点击提交,表单重复提交

    vue项目如何快速使用函数防抖和节流

    先创建一个js文件,放到一个文件夹下

    然后复制下列代码。。

    // 防抖
    export const antiShake= (fn, t) => {
        let delay = t || 2000
        let timer
        return function () {
          let args = arguments;
          if (timer) {
            clearTimeout(timer)
          }
          let callNow = !timer
          timer = setTimeout(() => {
            timer = null
          }, delay)
          if (callNow) fn.apply(this, args)
        }
    } 
    
    // 节流
    export const throttle = (fn, t) => {
      var timers = null;            
      return function() {                
          var context = this;               
          var argst = arguments;                
          if (!timers) {                    
              timers = setTimeout(function() {                        
                  fu.apply(context, argst);
                  timers = null;                    
              }, t);
          }            
      }   
    }

    然后就是如何在项目中使用了

    先在script中引入

    在函数中使用防抖,节流同理

    //引入,用几个../看你文件所在位置
    import {antiShake} from '../../utils/utils.js'; //防抖节流
    
    //点击按钮调用防抖
    addMsrwBtn:antiShake(function(){
                
    }),
  • 相关阅读:
    关于字节对齐以及内存占用
    关于HandlerThread的分析
    关于栈和队列的相关操作
    自定义控件(View的绘制流程源码解析)
    关于采用github.io搭建个人博客
    算法题解
    关于Android中ArrayMap/SparseArray比HashMap性能好的深入研究
    ADB server didn't ACK * failed to start daemon *
    Handler 、 Looper 、Message
    KMP字符串模式匹配详解(转)
  • 原文地址:https://www.cnblogs.com/hupeng1996/p/14653347.html
Copyright © 2011-2022 走看看