js防抖节流及应用场景

本文探讨了JavaScript中的防抖(debounce)和节流(throttle)技术,防抖常用于搜索框的输入事件,确保用户停止输入后再执行,而节流则适用于滚动加载数据等场景。文章介绍了两种技术的实现方式,包括setTimeout和时间戳的使用。
摘要由CSDN通过智能技术生成

一、js防抖debounce

js防抖,即事件触发后要过一定时间后才可以继续执行,应用场景,例如如搜索提示,我们在搜索的时候会出现搜索提示,即通过input的input事件发送请求数据,这是一个很频繁的请求,但是我们不希望用户在输入过程中发送请求,即在停顿或停止的时候请求一下数据
实现方法:通过 setTimeOut延时处理

//防抖debounce代码:
function debounce(fn,delay) {
 let timeout = null,
 isFirstTime = true
 return function() {
     //第一次执行不用延时
     if(isFirstTime){

       fn.apply(this,arguments)
       isFirstTime = false;
     }
     // 每当用户输入的时候把前一个 setTimeout clear 掉
     clearTimeout(timeout); 
     // 然后又创建一个新的 setTimeout, 这样就能保证interval 间隔内如果时间持续触发,就不会执行 fn 函数
     timeout = setTimeout(() => { //使用箭头函数不用保存this
         fn.apply(this, arguments);
     }, delay || 500);
 };
}

//测试拉动窗口查看输出
window.onresize = debounce(function(){
 console.log(1)
},1000)

二、节流

节流(throttle)则是限定事件在一定时间内只能执行一次,应用场景,监听滚动条滚动加载数据&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值