【JS】函数节流与函数防抖 - 定义 - 实现 - 使用场景 - 自定义JS工具类

在这里插入图片描述

自定义JS工具类 相关类似的源码请看 https://gitee.com/ykang2020/my_utils

1. 浏览器事件触发

一些浏览器事件: window.onresizewindow.mousemove等,触发的频率非常高,会造成界面卡顿
还有比如:用户疯狂点击,多次触发click事件;用户连续输入,多次触发keyup事件等

如果向后台发送请求,频繁触发,对服务器造成不必要的压力

所以要限制事件处理函数频繁调用,就有两种方式可以做到,分别是函数节流函数防抖

节流:
防抖:

2. 函数节流(throttle)

Why

在页面中滚动鼠标滚轮,会触发scroll事件,而滚动一次会触发很多次!!!如果向后台发送请求,频繁触发,对服务器造成不必要的压力

window.addEventListener("scroll", function (e) {
   
  console.log(e);
});

在这里插入图片描述

How

通过设置一个时间间隔,使得函数在执行一次之后,超过时间间隔才会执行第二次

适合多次事件按照时间做平均分配触发

单位时间内,多次触发事件,只会有一次生效

Where

resize 窗口调整
scroll 页面滚动
mousemove DOM元素拖拽功能
click 疯狂点击

throttle.js

创建一个节流函数,在 wait 毫秒内最多执行 callback 一次

/**
 * 实现函数节流
 * 功能: 创建一个节流函数,在 wait 毫秒内最多执行 `callback` 一次
 * @param {*} callback 
 * @param {*} wait 
 * @r
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值