JS魔法堂:函数节流(throttle)与函数去抖(debounce)(1)

本文介绍了JavaScript中的debounce(防抖)和throttle(节流)两种优化技术,比较了它们的工作原理,并详细剖析了lodash库中的_.throttle函数实现。作者还分享了前端开发学习资源和面试题准备的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果用手指一直按住一个弹簧,它将不会弹起直到你松手为止。

也就是说当调用动作n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间。

接口定义

复制代码

/**

  • 空闲控制 返回函数连续调用时,空闲时间必须大于或等于 idle,action 才会执行

  • @param idle {number} 空闲时间,单位毫秒

  • @param action {function} 请求关联函数,实际应用需要调用的函数

  • @return {function} 返回客户调用函数

*/

debounce(idle,action)

复制代码

2. 简单实现

复制代码

var debounce = function(idle, action){

var last

return function(){

var ctx = this, args = arguments

clearTimeout(last)

last = setTimeout(function(){

action.apply(ctx, args)

}, idle)

}

}

复制代码

三、什么是throttle

1. 定义

如果将水龙头拧紧直到水是以水滴的形式流出,那你会发现每隔一段时间,就会有一滴水流出。

也就是会说预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新周期。

接口定义࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值