vue使用防抖函数,vue 节流_1

  vue使用防抖函数,vue 节流

  本文主要介绍Vue2.x的例子——使用防抖和节流,帮助你更好的理解和学习使用Vue框架。感兴趣的朋友可以了解一下。

  

目录

   utils:vue已用:解释:防抖:节流:

  

utils:

  //防抖

  导出常数去抖=(func,wait=3000,immediate=true)={

  设timeout=null

  返回函数(){

  设上下文=this

  设args=arguments

  if (timeout) clearTimeout(超时);

  如果(立即){

  var callNow=!超时;//第一次点击true,第二次点击false,然后重复第一次。

  timeout=setTimeout(()={

  超时=空;

  },等等);//计时器ID

  if (callNow) func.apply(context,args);

  }否则{

  timeout=setTimeout(function() {

  func.apply(context,args);

  },等等);

  }

  };

  };

  //时间戳方案

  导出常量节流时间=(fn,wait=2000)={

  var pre=date . now();

  返回函数(){

  var context=this

  var args=参数;

  var now=date . now();

  if (now - pre=wait) {

  fn.apply(上下文,参数);

  pre=date . now();

  }

  };

  };

  //计时器方案

  export const throttleSetTimeout=(fn,wait=3000)={

  var timer=null

  返回函数(){

  var context=this

  var args=参数;

  如果(!计时器){

  timer=setTimeout(function() {

  fn.apply(上下文,参数);

  timer=null

  },等等);

  }

  };

  };

  

vue中使用:

  模板

  div class=main

  立即执行PAnti-shake/p

  按钮@click=click1 Click /button

  br /

  不立即执行PAnti-shake/p

  按钮@ Click= Click 2 Click/按钮

  br /

  p限制时间戳方案/p

  按钮@ Click= Click 3 Click/按钮

  br /

  p节流计时器方案/p

  按钮@ Click= Click 4 Click/按钮

  /div

  /模板

  脚本

  从“”导入{ debounce,throttleTime,throttleSetTimeout }。/utils ;

  导出默认值{

  方法:{

  点击1:去抖(

  函数(){

  Console.log(立即执行防抖);

  },

  2000,

  真实的

  ),

  点击2:去抖(

  函数(){

  Console.log(不立即执行防抖);

  },

  2000,

  错误的

  ),

  click 3:throttle time(function(){

  Console.log(节流时间戳方案);

  }),

  click 4:throttleSetTimeout(function(){

  Console.log(节流计时器方案);

  })

  },

  };

  /脚本

  样式范围的语言=scss

  * {

  边距:0;

  字体大小:20px

  用户选择:无;

  }。主要{

  位置:绝对;

  左:50%;

  transform:translate x(-50%);

  宽度:500px

  }

  按钮{

  边距-底部:100px

  }

  /风格

  

解释:

  

防抖:

  立即执行版本:如果immediate为true,则在第一次点击后执行,再次点击后不执行。等待时间结束后,再次点击后生效,即只执行第一次。

  原则:

  如果第一次单击时没有timeoutID,callNow为true,那么将立即执行目标代码。如果第二次点击中有timeoutID,callNow为false,则不会执行目标代码。当等待时间结束时,timeoutID将被设置为null,并重复立即执行的逻辑。

  不立即执行版本:如果immediate为false,则第一次点击不会执行,只有在等待时间结束后才会生效,即无论点击多少次,都只会执行最后一次点击事件。

  原则:

  使用setTimeout来延迟事件的执行。如果被多次触发,则上次clearTimeout执行的代码会重新启动。如果在计时期间没有事件被触发,目标代码将被执行。

  

节流:

  当连续事件被触发时,以等待频率执行目标代码。

  效果:

  这就是Vue2.x例子的细节——使用防抖和节流。更多关于vue防抖和节流的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: