专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

前端面试题 | 2019 必考的防抖与节流函数

ins518 2024-09-18 17:40:19 技术文章 11 ℃ 0 评论

在写小程序时候,因为没有引入 NPM 包,所以有些通用功能需要自己写。

防抖和节流就是其中之一。

而在面试中,这两个函数经常要求手写出来。

所以不单要熟悉使用,还得明白它的原理。

防抖和节流都能用于限制函数的执行频率,但是它们的限制方式存在区别。

在看代码前,可以先看一道相关的题目。

这道题目可能对阅读下面代码有一定帮助。

防抖(debounce)

防抖函数是设定一个计时器:

  • 当计时器停止后,回调函数会被执行
  • 如果函数被持续调用,则重新开始计时

以点赞功能为例,如果用户每按点赞就发送一次请求,这是不合理的,会给后台带来不必要的压力。

所以,我们会考虑引入防抖函数。

即使用户在 2 秒内点击了 10 次,最后还是只发送 1 次请求。

那么,反映在代码上,就是 ——

节流(throttle)

节流函数是设定一个计时器:

  • 当计时器停止后,回调函数会被执行
  • 如果函数被持续调用,并不会重新开始计时,也不会开启一个新的计时周期

以点赞功能为例:如果用户以 0.1s 的频率持续不断点赞,一个设置为 2s 的节流函数,会每隔 2s 发一次点赞请求。

而如果是一个设置为 2s 的防抖函数,则只会在用户停止点赞后 2s 才会发出点赞请求。

而反应到代码上,就是

其他

演示的防抖和节流代码,只是一个简化版本。例子中都是时间结束后,才产生回调,属于后置的防抖和节流。

存在需要在函数调用时,先执行一次回调函数的情况,这个留待大家思考。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表