千家信息网

JavaScript防抖与节流的区别有哪些

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容主要讲解"JavaScript防抖与节流的区别有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaScript防抖与节流的区别有哪些"吧!
千家信息网最后更新 2025年11月08日JavaScript防抖与节流的区别有哪些

本篇内容主要讲解"JavaScript防抖与节流的区别有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaScript防抖与节流的区别有哪些"吧!

前言:

作为前端开发中会以下两种需求

(1)搜索需求

搜索的逻辑就是监听用户输入事件,等用户输入完成之后把数据发送给后端,后端返回匹配数据,前端显示数据到页面。如果只要用户输入就发请求,这样会给后端造成请求压力,需要控制请求的频率。

(2)页面无限加载数据

页面无限加载数据的逻辑就是监听用户用户滚动事件,在用户滚动的过程中,去请求下一页的数据来显示到页面。,那么只要滚动就去发请求,同样会造成后端请求压力,需要控制请求的频率。

以上两种看起来都是控制请求频率的问题,但是需求有细微的差别:搜索是用户在输入中输入多次,只有等用户短暂停止输入之后,就去发送请求,此时就需要防抖去实现。滚动加载数据是在用户滚动页面的过程中每间隔一段时间就去请求,即使用户一直滚动,都会去请求,而不是等用户停止滚动才去请求,此时就需要使用节流去实现。

1、防抖

含义:

简单的理解方式就是:用户多次触发事件,在用户一直触发事件中,事件不会执行,只有在用户停止触发事件一段时间之后再执行这个事件一次。

实现:

// @fn 是对应请求数据    // @ms 是用户多次触发事件的时间间隔 是一个毫秒数    function debounce(fn, ms) {        let timeout = null        return function() {            clearTimeout(timeout)            timeout = setTimeout(() => {                fn.apply(this, arguments)            }, ms)        }    }

原理:

用户每一次触发事件都会延迟执行,在设置延迟定时器执之前都会把上一次延迟定时器清除,最终只有用户连续触发这个事件的间隔时间超出我们设置的参数ms毫秒之后,该事件才会触发一次

测试:

    function getData(){        console.log('发送请求...')    }    document.getElementById('searchInput').oninput = debounce(getData, 800)    // 如果用户一直在输入,是不会发送请求    // 只有用户连续输入时间间隔超过800ms之后才会请求一次数据,也就是用户在800ms内没有输入才会去请求数据

2、节流

含义:

简单的理解方式就是:用户多次触发事件,在用户一直触发事件过程中事件会每间隔一段时间执行一次,会执行多次。

实现:

// @fn 是对应请求数据    // @ms 是用户多次触发事件的时间间隔 是一个毫秒数     function throttle(fn, ms){        let flag = true        return function(){            if(!flag) return            flag = false            setTimeout(()=>{                fn.apply(this, arguments)                flag = true            }, ms)        }    }

原理:

用户每一次触发事件都会设置一个延迟定时器,但是如果已经设置了延迟定时器就会等上一次延迟定时器执行之后才会开启下一个定时器,这样用户一直触发事件,事件会每间隔一段时间执行一次

测试:

function getData(){        console.log('发送请求...')    }    _window.onscroll = throttle(getData, 800)    // 用户在滚动的过程中,会间隔去请求数据

3、总结

节流和防抖本质上都是控制事件执行的频率,但是触发事件的时机本质上有区别,防抖是在用户多次触发事件,当用户停止触发事件,将事件执行一次;节流是用户多次触发事件,会在多次触发的过程中,间隔执行事件。

到此,相信大家对"JavaScript防抖与节流的区别有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

用户 事件 数据 输入 时间 定时器 延迟 过程 页面 就是 频率 控制 只有 需求 搜索 内容 前端 压力 原理 含义 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南电力网络安全检测装置 堡垒之夜手游服务器密码 手机网络安全认证错误 里诺连接数据库失败 营销软件开发加盟 二零一六年国家网络安全宣传周 电子政务数据库有几个 串口服务器属于什么层 活锁和死锁的概念数据库 网络安全一般学习什么 美国计算机协会网络安全 如何架设网站和服务器 闵行区多功能软件开发私人定做 地毯贴图软件开发 华为海思芯片的服务器 联想万全服务器维修地点 计算网络技术专业课程 什么专业可以从事嵌入式软件开发 在软件开发公司做销售好干吗 国家网络安全中心最新任命公示 网络安全宣传周教育手抄报 地税局网络安全技术检查 陇县气象局网络安全宣传周 网站服务器多久可以重启一次 一个数据库中有两台设备的数据 网络安全合规检查 调用本地数据库文件类型 醴陵公安系统的网络安全管理 网络安全行业上游企业 网络安全专家一
0