在Javascript中怎么限制用户高频率操作?

假设有一个pc端的页面,里面有一个移入显示菜单的模块,若用户高频率(非常快速)移入移出菜单,就会出现菜单像抽搐了一样,显示不正常,我相信很多程序猿都出现过类似的现象,这个时候就需要用到防抖与节流了。

什么是防抖?什么是节流?

防抖:前面的所有的触发都被取消,最后一次执行 在规定的时间之后才会触发,也就是说如果连续快速的触发,只会执行一次;

节流:在规定的间隔时间范围内不会重复触发回调,只有大于这个时间间隔才会触发回调,把频繁触发变为少量触发;

了解了概念之后,那么实际怎么操作呢?

可以使用一个插件,名字叫:lodash.js,官网链接:Lodash 简介 | Lodash 中文文档 | Lodash 中文网

一、防抖

需求:在控制台输出文本框中的内容。

代码:

<body>
  请你输入搜索的内容: <input type="text">
</body>
<script src="../js//lodash.js"></script>
<script>
  let input = document.querySelector("input");
  // 下面代码的意思是,快速输入完了之后1秒后再执行
  input.oninput = _.debounce(function() {
    console.log("ajax发请求了");
  },1000)
</script>

二、节流

需求:每点击一次按钮,数字进行+1。

代码:

<body>
  <div>
    <h1>我是计数器:<span>0</span></h1>
    <button>点我+1</button>
  </div>
</body>
<script src="../js/lodash.js"></script>
<script>
  let span = document.querySelector("span");
  let btn = document.querySelector("button");
  let count = 0;
  // 计数器:在1秒以内执行一次
  btn.onclick = _.throttle(function(){
    count++;
    span.innerHTML = count;
    console.log("执行");
  },1000)
</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值