函数防抖和函数节流是两个目的一样的方法,主要用于向服务器发送请求时的优化,防止发送请求的频率过高。不同之处在于,函数防抖是每n秒结束调用一次,函数节流是每n秒内调用一次。
函数防抖 Debounce
概念:在函数被触发n秒后再调用,如果n秒内再次触发,则重新计时。限定在一定时间内函数只能执行一次(防止你手抖点多次),而且执行的是在这一定时间内最后一次调用。
函数去抖就是对于一定时间段的连续的函数调用,只让其执行一次。
function success(){
console.log("提交成功")
}
// 1 定义防抖函数
const debounce = (fn, delay) => {
let timer = null
// 4 把setTimeout函数的结果返回给debounce函数
return (...args) =>{
//省略号表明输入不定参数,所有传递进来的参数都被放到一个数组中,赋值给变量args
// 5 清除前上一次delay时间内触发的函数,确保最后一次触发重新计时调用
clearTimeout(timer)
// 3 设置一个定时器
timer = setTimeout(()=>{
// 注意这里要设置一个匿名函数调用fn()不能直接调用
fn.apply(this, args