• 防抖节流?俩者区别?vue如何使用防抖、节流来解决点击问题?


    一、什么是防抖?

    防抖(debounce)

    所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间,直到执行时间结束才可以再去触发执行第二次。

    二、什么是节流?

    节流(throttle)

    所谓节流,就是指连续触发事件但是在 n 秒中只执行一次函数。节流会稀释函数的执行频率。间隔时间通常是固定的!

    三、俩者区别

    防抖与节流最大的区别在于防抖俩次成功执行的事件中间的间隔时间不一定固定不变,因为存在重置的情况,而节流的间隔时间是固定不变的,是不会受到间隔期点击而重置计时的影响

    四、vue如何使用防抖、节流来解决点击问题

    (1)防抖debounce.js(采用的简单的)

    // 防抖
    /*
    * fn [function] 需要防抖的函数
    * delay [number] 毫秒,防抖期限值
    */
    export function debounce(fn, delay) {
    
        let timer = null
        return function () {
            if (timer) {
                clearTimeout(timer)
                console.log('拦截')
            }
            timer = setTimeout(() => {
                console.log('发送')
    
                fn.apply(this, arguments)
                timer = null
            }, delay)
        }
    }

    (2)节流throttle.js(同样采用简单的)

    // 节流
    /*
    * fn [function] 需要防抖的函数
    * delay [number] 毫秒,防抖期限值
    */
    export function throttle(fn, delay) {
        let timer = null
        return function () {
            if (timer) {
                console.log('拦截');
                return
                
            }
            timer = setTimeout(() => {
                console.log('发送');
    
                fn.apply(this, arguments)
                timer = null
            }, delay)
        }
    }

    (3)按钮页

     <el-button  class="test1" @click="top1" >防抖</el-button>
     <el-button  class="test1" @click="top2" >节流</el-button>

    (4)

    // 防抖
      import{debounce} from '../../utils/debounce'
    // 节流
      import{throttle} from '../../utils/throttle'

    (5)js

    export default {
        name : 'test',
        data() {
          return {
            
            clickMe:null,
            clickMe1:null,
          }
        },
        created() {
         
          // 防抖
          
         // clickMe 接受返回的函数, 这里的function你也可以换成你的methods里面定义的函数
          this.clickMe = debounce(function(data){
            console.log('fangdou:' + data);
          }, 3000)
          // 节流
          this.clickMe1 = throttle(function(data){
            console.log('jieliu:' + data);
          }, 3000)
    
        },
       methods: {
         
        top1(){
          
          this.clickMe('防抖、再点快点我就不出来了!');
          
        },
        top2(){
          
          this.clickMe1('节流、再点快点我就不出来了!');
        },
      
       
    
        
        },
    世界上没有什么偶然,有的只有必然。——壹原侑子
  • 相关阅读:
    【算法】剑指第二版面试题6 :从尾到头打印链表
    Go电商秒杀 (1)
    Go秒杀服务端优化
    Linux AUFS 文件系统
    mount挂载虚拟文件系统
    自己动手写docker之Linux命令(CentOS7.7)
    自己动手写docker之namespace和cgroup
    【协作式原创】自己动手写docker之urfave cli
    Go 1.14之前的死循环Case
    linux下定时执行任务的方法
  • 原文地址:https://www.cnblogs.com/liazhimao/p/14593325.html
Copyright © 2020-2023  润新知