节流函数和防抖函数的区别和应用

简介: 节流函数和防抖函数的区别和应用

函数节流

一个函数执行一次后,只有大于设定的执行周期才会执行第二次。

function throttle(func, ms = 1000) {
    //标记是否可以执行
    let canRun = true;
    return function (...args) {
        //不可执行
        if (!canRun) return;
        //执行后设置不可执行
        canRun = false;
        //设置执行周期
        setTimeout(() => {
            func.apply(this, args);
            //重置标记
            canRun = true;
        }, ms);
    }
}

测试 :

const task = () => { console.log('run task') };
const throttleTask = throttle(task, 1000);
//鼠标连续点击,在设置的执行周期内只会触发一次
window.addEventListener('click', throttleTask);

应用:

  • 滚动加载,加载更多或滚动到底部监听
  • 搜索框,搜索联想功能
  • 高频点击提交,表单重复提交

函数防抖

一个需要频繁触发的函数 在规定事件内 只让最后一次生效 前面的不生效

function debounce(func, ms = 1000) {
    //定时器ID
    let timer;
    return function (...args) {
        //清除定时器
        if (timer) {
            clearTimeout(timer);
        }
        //设置函数执行时间
        timer = setTimeout(() => {
          func.apply(this, args);
        }, ms);
    }
}

测试 :

const task = () => { console.log('run task') };
const debounceTask = debounce(task, 1000);
//鼠标连续点击,只会触发最后一次
window.addEventListener('click', debounceTask);

应用 :

  • 手机号、邮箱正则输入检测
  • 搜索框输入:用户最后一次输入完,再发送请求
  • 窗口大小:窗口调整完成后,计算窗口大小,防止重复渲染
目录
相关文章
|
6月前
|
JavaScript 前端开发
ES6防抖及节流的方法
ES6防抖及节流的方法
52 2
|
前端开发
封装防抖函数和节流函数
封装防抖函数和节流函数
74 0
|
2天前
|
前端开发
防抖和节流的区别,实现和用处。
防抖和节流是优化高频事件处理的两种技术。防抖确保在一系列连续事件后仅执行最后一次操作,如搜索输入完成后再发送请求;节流则保证在设定时间内仅执行一次操作,适用于滚动加载等场景。两者通过限制回调函数的执行频率,有效提升前端性能。示例代码展示了如何实现这两种技术。
|
1月前
|
前端开发 JavaScript UED
什么是防抖和节流?有什么区别?如何实现?
防抖和节流是前端优化技术,用于限制函数的执行频率。防抖是在一段时间内只执行一次函数,常用于搜索输入、窗口调整等场景;节流是在固定时间间隔内执行函数,适用于滚动事件、鼠标移动等。实现方式通常使用定时器。
|
6月前
|
UED
函数防抖
在频繁触发的情况下,只有足够的空闲时间,才执行代码一次,如果没有执行完就清除掉,重新执行逻辑。简单来说,当触发后再次触发,会取消上一次触发的执行,直到最后一次触发后过去设定时间后才执行。
51 5
什么是防抖和节流,怎么实现一个防抖和节流?
功能:当事件被触发N秒之后再执行回调,如果在N秒内被触发,则重新计时。
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
面试官:防抖和节流的区别是啥?实现一个防抖和节流函数(一)
|
JavaScript
原生js实现一个节流函数和防抖函数?
原生js实现一个节流函数和防抖函数?
71 0
|
JavaScript
如何通过原生js实现一个节流函数和防抖函数?
如何通过原生js实现一个节流函数和防抖函数?