前言:防抖函数在日常开发中属于是一个非常非常重要的知识点。通常在一个项目的最开始构建的时候,都会在 utils文件夹下备上这样一个函数,来为以后做准备。 (tips:utils 在大部分翻译软件内好像都叫跑龙套的,这个翻译不是那么合理。这个单词在这个场景下更像存放工具类的函数的文件夹。通常我们会放一些比如格式化时间,格式化文件大小格式,节流之类的函数。)

这篇文章原意是想紧随在姊妹篇文章节流函数的原理之后发布的。但是那时候自己对闭包、高阶函数的概念不是特别清楚,害怕误导读者,故拖了比较久的才发布这个重要知识点。

注:本文不会讲解防抖的高级写法,只会一步一步带你理清思路,如何拓展功能还需各位看官举一反三。


一. 什么是防抖?使用场景是什么?

  1. 首先我们要知道,这里的防抖具体指的是什么?我们假设一个场景,这里就拿我们日常最常用的功能,《搜索〉来举例子。

2. 我们用 v-model 指令绑定这个 <input> 框。然后绑定一个根据用户输入的关键词,去后端数据库检索数据的模拟函数。(这里我们用 console 代替)。

​然后我们用 watch 去监视 searchKeyword 的变化,每当用户输入关键词后,我们就向后端发起一次请求。

3. 我们可以非常明显的看到,在这种情况下。我仅仅只是想最后搜索 hanzhenfang 这几个关键词,但是我在输入每一个字符的时候,都会去后端请求一次,数据量小还好,如果数据量过大的话,由于前几次的请求都是毫无意义的,势必会造成性能和资源上的浪费。

4.什么?你说为什么不等最后点击搜索按钮的时候再去搜索? emm... 这个确实是可以。但是突然有一天,产品经理说:“这个搜索框如果有联想功能的话就更好了!我们要赶超百度,赛过谷歌!”你怎么办嘞?目前的情况到不是不行

手把手教你实现一个防抖函数(debounce)相关推荐

  1. 防抖函数Debounce实现

    实现原理就是利用定时器,函数第一次执行时设定一个定时器,之后调用时发现已经设定过定时器就清空之前的定时器,并重新设定一个新的定时器,如果存在没有被清空的定时器,当定时器计时结束后触发函数执行. 手写一 ...

  2. debounce实现 js_javascript防抖函数debounce详解

    定义及解读 防抖函数 debounce 指的是某个函数在某段时间内,无论触发了多少次回调,都只执行最后一次.假如我们设置了一个等待时间 3 秒的函数,在这 3 秒内如果遇到函数调用请求就重新计时 3 ...

  3. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  4. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  5. 第五十八期:从0到1 手把手教你建一个区块链

    近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构建一个自己的区块链. 作者:Captain编译 近期的区块链重回热点,如果你想深入了解区块链,那就来看一下本文,手把手教你构 ...

  6. 手把手教你撸一个Web汇率计算器

    手把手教你撸一个Web汇率计算器 前言 前段时间刚接触到前端网页开发,但是对于刚入门的小白而言,像flask.Django等这类稍大型的框架确实不太适合,今天这个Dash是集众家之长于一体的轻量化We ...

  7. 还没理解微前端?手把手教你实现一个迷你版

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 最近看了几个微前端框架的源码(single-spa[1].qiankun[2].micro- ...

  8. 手把手教你做一个Java贪吃蛇小游戏

    大家好,我是孙不坚1208,这篇博客给大家分享一下:如何做一个贪吃蛇小游戏(Java版)的exe应用程序,希望能给需要帮助的朋友带来方便. 手把手教你做一个Java贪吃蛇小游戏的exe应用程序 一.J ...

  9. 手把手教你编写一个上位机

    关注+星标公众号,不错过精彩内容 转自 | 嵌入式大杂烩 嵌入式开发,基本都会用到有一些上位机工具,比如串口助手就是最常用的工具之一. 那么,今天分享有一篇由ZhengN整理的用Qt写的简单上位机教程 ...

最新文章

  1. bzoj-1026 windy数
  2. golang 实现 while 和 do……while 循环
  3. 皮一皮:沉迷游戏的下场...
  4. zabbix常用key和自定义key的讲解
  5. Luogu1007 独木桥
  6. Git学习系列之Debian或Ubuntu上安装Git详细步骤(图文详解)
  7. 访问vector元素方法的效率比较(转)
  8. 以实战之名尽兵法之意
  9. vim格式化代码实际上就是 缩进代码, 命令是等号=
  10. python ray定时任务_python定时任务APScheduler
  11. Scala中的Option
  12. 【1401】机器翻译
  13. springcloudGateway重写请求后,serverHttpRequest.mutate().header失效
  14. 董卿频上热搜的背后:阅读量之广令人惊叹,靠的不仅仅是坚持
  15. 统计一下项目中的代码有多少行是你贡献的
  16. 新网银行金融科技挑战赛 AI算法赛道 亚军方案
  17. 《惢客创业日记》2019.07.04(周四)以德报怨,何以报德?
  18. [技巧]用js生成日志文件、获取ip。
  19. 模型训练前后显卡占用对比、多卡训练GPU占用分析【一文读懂】
  20. UTC时间转本地时间

热门文章

  1. 解决Ubuntu执行sudo命令后提示无法解析主机
  2. vm虚拟机安装lede旁路由_折腾群晖笔记:利用VMM虚拟机 安装LEDE旁路由 实现软路由超强功能...
  3. 万圣节的派对 nyist733
  4. VS在引用外库运行时显示无法解析外部符号
  5. 生产排程甘特图应用及绘制步骤
  6. 基于小熊派的HarmonyOS鸿蒙开发教程——内核篇
  7. 角谷猜想python代码_查看“Python-2020-fall”的源代码
  8. [导入]身怀柔道绝技不敌抢车贼 俄著名美女保镖横死街头
  9. 探索无限可能:物联网技术的未来应用引领智能化时代
  10. 计算机xp用户丢失,如何找回xp系统丢失的硬盘空间?