zoukankan      html  css  js  c++  java
  • vue中使用防抖函数

    1.新建lodash.js

    // /*函数防抖*/
    export function throttle(fn) {
      let canRun = true; // 通过闭包保存一个标记
      return function () {
        // 在函数开头判断标记是否为true,不为true则return
        if (!canRun) return;
        // 立即设置为false
        canRun = false;
        // 将外部传入的函数的执行放在setTimeout中
        setTimeout(() => {
          // 最后在setTimeout执行完毕后再把标记设置为true(关键)表示可以执行下一次循环了。
          // 当定时器没有执行的时候标记永远是false,在开头被return掉
          fn.apply(this, arguments);
          canRun = true;
        }, 500);
      };
    }

    注:我这手把时间统一定死了,如果想自定义的话可以把时间作为参数自己传进来,方法修改如下:

    // /*函数防抖*/
    export function throttle(fn,delay) {
      let canRun = true; // 通过闭包保存一个标记
      return function () {
        // 在函数开头判断标记是否为true,不为true则return
        if (!canRun) return;
        // 立即设置为false
        canRun = false;
        // 将外部传入的函数的执行放在setTimeout中
        setTimeout(() => {
          // 最后在setTimeout执行完毕后再把标记设置为true(关键)表示可以执行下一次循环了。
          // 当定时器没有执行的时候标记永远是false,在开头被return掉
          fn.apply(this, arguments);
          canRun = true;
        }, delay);
      };
    }

    使用时:

    //保存用户信息修改
        save: throttle(function (500) {
             //...
        })

    2.在页面中引用

    import { throttle } from "@/utils/lodash";
     
    3.在页面中使用

     示例代码:

    //保存用户信息修改
        save: throttle(function (e) {
          //表单验证
          this.$refs["dialogForm"].validate((vaild) => {
            if (vaild) {
              saveUser(this.dialogForm).then((ret) => {
                if (ret.isSuccess) {
                  operateSuccess();
                  this.getTableList();
                } else {
                  operateFail(ret.errMsg);
                }
                this.dialogVisible = false;
              });
            }
          });
        }),
  • 相关阅读:
    python面向对象中的一些特殊__方法__
    mysql数据库的优化和查询效率的优化
    详解python的垃圾回收机制
    基于django的自定义简单session功能
    使用python制作验证码
    Netty 系列之 Netty 高性能之道
    Java提高篇(二七)-----TreeMap
    Oracle、MySql、SQLServer 数据分页查询
    深入理解数据库原理系列(1)---日志系统原理
    34个数据库常见面试题讲解
  • 原文地址:https://www.cnblogs.com/xiaoxiaomini/p/15661873.html
Copyright © 2011-2022 走看看