温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

vue 中怎么使用防抖和节流防止重复点击

发布时间:2021-07-30 16:38:40 来源:亿速云 阅读:415 作者:Leah 栏目:大数据

vue 中怎么使用防抖和节流防止重复点击,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

/** * 函数防抖 (只执行最后一次点击)

 * @param fn

 * @param delay * @returns {Function} * @constructor */export const Debounce = (fn, t) => {    let delay = t || 500;    let timer;    console.log(fn)    console.log(typeof fn)    return function () {        let args = arguments;        if(timer){            clearTimeout(timer);        }        timer = setTimeout(() => {            timer = null;            fn.apply(this, args);        }, delay);    }};  /** * 函数节流 * @param fn * @param interval * @returns {Function} * @constructor */export const Throttle = (fn, t) => {    let last;    let timer;    let interval = t || 500;    return function () {        let args = arguments;        let now = +new Date();        if (last && now - last < interval) {            clearTimeout(timer);            timer = setTimeout(() => {                last = now;                fn.apply(this, args);            }, interval);        } else {            last = now;            fn.apply(this, args);        }    }};

用法:

methods:{  getAliyunData:Throttle(function(){  ...   },1000),}

案例2:

防抖和节流是我们在开发过程中常用优化性能的方式

在 vue 中怎么使用:

1、在公共方法中(如 public.js 中),加入函数防抖和节流方法

// 防抖export function _debounce(fn, delay) {     var delay = delay || 200;    var timer;    return function () {        var th = this;        var args = arguments;        if (timer) {            clearTimeout(timer);        }        timer = setTimeout(function () {            timer = null;            fn.apply(th, args);        }, delay);    };}// 节流export function _throttle(fn, interval) {    var last;    var timer;    var interval = interval || 200;    return function () {        var th = this;        var args = arguments;        var now = +new Date();        if (last && now - last < interval) {            clearTimeout(timer);            timer = setTimeout(function () {                last = now;                fn.apply(th, args);            }, interval);        } else {            last = now;            fn.apply(th, args);        }    }}

2、在需要使用的组件引用

import { _debounce } from "@/utils/public";

3、在 methods 中使用

 methods: {    // 改变场数    changefield: _debounce(function(_type, index, item) {        // do something ...    }, 200)  }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue
AI