vue中使用防抖

/* 多次点击 只执行最后一次 */
const debounce = (function () {
  let timer = null;
  return function (func, delay = 1000) {
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(func, delay);
  };
})();
/* 先执行一次 */
const debounce2 = (function () {
  let timer = null;
  let flag = true;
  return function (func, delay = 1000) {
    if (flag) {
      flag = false;
      func.call();
      return;
    }
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      flag = true;
      func.call();
    }, delay);
  };
})();

export default {
  debounce,
  debounce2,
};
/* 挂载到原型 */
import debounce from "./debounce/debounce";
Vue.prototype.$utils = {
  ...debounce,
};
/* 使用 */
this.$utils.debounce(() => {
 // ...     
}, 500);

 

posted @ 2020-07-01 10:17  ZeroShiro  阅读(225)  评论(0编辑  收藏  举报