防抖节流
发布日期:2021-11-21 16:35:33 浏览次数:13 分类:技术文章

本文共 824 字,大约阅读时间需要 2 分钟。

1. 防抖函数

概念:频繁触发,但只在规定时间内没有触发查询条件才会执行一次代码。

实现原理:如果在delay时间内频繁操作,则每次都会清除一个定时器并重新创建一个,直到最后一次操作,等待delay时间后执行fn函数。
应用场景:频繁操作点赞和取消点赞;输入框搜索自动补全事件;scroll滚动触发事件,判断是否到页面底部自动加载更多;表单校验;按钮提交;浏览器窗口缩放,resize事件;
优点:有效减轻服务器的压力;
代码实现:

const debounce = (fn, delay) => {  let timer = null  return (...args) => {    clearTimeout(timer)    timer = setTimeout(() => {      fn.apply(this, args)    }, delay)  }}

2. 节流函数

概念:频繁触发,但在指定时间内只执行一次代码

实现原理:如果频繁操作,每次都会判断当前是否有函数在执行,如果没有,则会在delay时间后执行函数。
应用场景:拖拽mousemove事件;输入框搜索自动补齐;scroll滚动触发事件,判断是否到页面底部自动加载更多,给scroll加debounce,只有用户停止滚动,才会判断是否到达页面底部;如果是throttle,只要页面滚动就会间隔一段时间判断一次;
优点:有效减轻服务器的压力;
代码实现:

const throttle = (fn, delay) => {  let loading = false  return (...args) => {    if (loading) return    loading = true    setTimeout(() => {      fn.apply(this, args)      loading = false    }, delay)  }}

转载地址:https://blog.csdn.net/yyychocolate/article/details/108076411 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:GET 和 POST区别
下一篇:JS单线程

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月02日 22时09分19秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【C++】算法集锦(12):高楼扔鸡蛋 2019-04-27
【图解】拥塞控制 2019-04-27
线程上下文切换 2019-04-27
什么是服务熔断? 2019-04-27
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能 2019-04-27
C++面经总结之《Effective C++》(一) 2019-04-27
C++面经总结之《Effective C++》(二) 2019-04-27
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!! 2019-04-27
打开我的收藏夹 -- Python数据分析杂谈 2019-04-27
上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构 2019-04-27
上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据 2019-04-27
上手Pandas,带你玩转数据(3)-- pandas数据存入文件 2019-04-27
爬虫遇上不让右击、不让F12的网站,该怎么办? 2019-04-27
上手Pandas,带你玩转数据(4)-- 数据清洗 2019-04-27
上手Pandas,带你玩转数据(5)-- 数据转换与数据定位 2019-04-27
上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (1)开篇:初识爬虫,基础铺垫 丨蓄力计划 2019-04-27
从零开始,学会Python爬虫不再难!!! -- (2)承接:解析网页,抓取标签 丨蓄力计划 2019-04-27
AttributeError: module ‘urllib‘ has no attribute ‘quote‘的解决办法 2019-04-27
linux shell — 6.初识 EXT2 文件系统 2019-04-27