zoukankan      html  css  js  c++  java
  • vue 使用防抖和节流

    // 防抖
    export const debounce= (func, wait) => {
        var timeout;
    
        return function () {
            var context = this;
            var args = arguments;
    
            clearTimeout(timeout)
            timeout = setTimeout(function(){
                func.apply(context, args)
            }, wait);
        }
    };
    
    // 节流
    export const throttle = (fn, wait) => {
        let canRun = true; // 通过闭包保存一个标记
        return function () {
          if (!canRun) return; // 在函数开头判断标记是否为true,不为true则return
          canRun = false; // 立即设置为false
          setTimeout(() => { // 将外部传入的函数的执行放在setTimeout中
            fn.apply(this, arguments);
            // 最后在setTimeout执行完毕后再把标记设置为true(关键)表示可以执行下一次循环了。当定时器没有执行的时候标记永远是false,在开头被return掉
            canRun = true;
          }, wait);
        };
      }
    
    ////////////////////////////////////////////////////////// .vue文件中引用两个方法后直接使用
    methods:{
        clickFun: throttle (function(){
        ...........逻辑代码.........
         },1000),
    }
    防抖:触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间。
    应用:因为防抖的特性,一直执行最后一次的触发,所以可以用于鼠标移动确定最后一次移动的时候的坐标位置。
    节流:高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率
    应用:因为节流是监听到第一次触发事件后就执行,所以可以用来防止按钮多次点击执行多次,且按照第一次点击的事件为准
     
  • 相关阅读:
    Python 学习日记 第七天
    Python 学习日记 第六天
    Python 学习日记 第五天
    Python 学习日记 第四天
    Redis 中的数据类型及基本操作
    Asp.net mvc 中View 的呈现(二)
    Asp.net mvc 中View的呈现(一)
    Asp.net mvc 中Action 方法的执行(三)
    Asp.net mvc 中Action 方法的执行(二)
    Asp.net mvc 中Action 方法的执行(一)
  • 原文地址:https://www.cnblogs.com/tutao1995/p/12620628.html
Copyright © 2011-2022 走看看