• 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;
              });
            }
          });
        }),
  • 相关阅读:
    C基础 数据序列化简单使用和讨论
    C扩展 从共享内存shm到memcache外部内存
    C扩展 C++回顾到入门
    window 安装 thrift
    CentOS 7 安装 docker-compose
    CentOS 7 安装 docker-machine
    linux jdk安装。
    CentOS 7(64位) 下Docker的安装
    Centos7 远程登录端口22 设置
    docker官方镜像库 搭建 jekins
  • 原文地址:https://www.cnblogs.com/xiaoxiaomini/p/15661873.html
Copyright © 2020-2023  润新知