简单实现javascript函数防抖

简单实现javascript函数防抖

首先我们需要先了解下函数防抖的概念和实现意义

什么是防抖?

防抖指的是:防止用户在短时间内,大量,高频的重复触发事件,发送大量请求,影响用户体验,给服务器带来负担。

怎么才能实现防抖?

在用户触发时间过于频繁时,只执行最后一次触发的事件。

防抖的运用场景

  1. 用户注册;
  2. 提交搜索内容等数据交互场景。

让我们来都通过一个小案例来具体了解下吧。

简单实现javascript函数防抖_第1张图片
需求:点击add按钮,下方显示数字区域从1开始累加。但是一次点击过程只加1。

防抖前

<body>
    <h1>JavaScript函数防抖</h1>

    <input type="button" id="btn" value="add按钮">
    <h2 id="number">显示数字</h2>
</body>
<script>
    let _btn = document.querySelector('#btn');
    let _number = document.querySelector('#number');

    let num = 0;
    let timer;

    _btn.onclick =  ()=> {
    console.log(num);
    _number.innerHTML = ++num;
    }
</script>

简单实现javascript函数防抖_第2张图片

防抖后

简单实现javascript函数防抖_第3张图片
实现代码:

_btn.onclick = () => {
   console.log(num);

    if (timer != null) {
    //如果触发前存在定时器,则将其清除 重置回初始化的状态
    clearTimeout(timer);
     }
    timer = setTimeout(() => {
     _number.innerHTML = ++num;
	}, 500);
	
 };

只需使用定时器就能实现,通过设定的时间来控制重复执行的时间。因为演示使用点击事件的缘故,展现起来像是一串操作后执行最后一次,实际的运用中完全由定时器执行时间控制。

这里是万物之恋,下次再见了!

你可能感兴趣的:(javascript)