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) }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。