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;
              });
            }
          });
        }),
  • 相关阅读:
    aws-lambda之异步实现文件的下载上传
    aws实例部署flask报错script-timed-out-before-returning-headers-application-py
    aws上部署scrapy,出现 Out of Memory,内存溢出
    在线UserAgent,爬虫UA
    ubuntu10.24 下安装 unixODBC coreseek4.1 手记
    ubuntu12.04 安装 python2.6
    coreseek/sphinx CentOS6.4下安装
    Elasticsearch 6.2.3 崩溃经历
    (转)梳理在线教育的几大金矿
    kangaroo-open 开源在线公开课平台
  • 原文地址:https://www.cnblogs.com/xiaoxiaomini/p/15661873.html
Copyright © 2011-2022 走看看