产生原因:当持续触发某事件时,一定时间间隔内没有再触发事件时,事件处理函数才会执行一次,如果设定的时间间隔到来之前,又一次触发了事件,就重新开始延时。简单来说就是对点击事件做了一个延时处理。
防抖主要运用的是闭包原理,触发点击事件,调用debounce方法,传入参数为需要防抖的方法和延时时间,retrun返回一个方法,settime时间到再触发 .call(this, arges)执行方法。
// 防抖函数 // 参数1:触发的方法 // 参数2:等待时间 function debounce(fun, time) { let timer return (arges) => { clearInterval(timer) timer = setTimeout(() => { // 触发该方法 fun.call(this, arges) }, time) } }, // 点击事件 onClick() { let setTimeMsg = this.debounce(this.getMsg(), 500) setTimeMsg("参数可选,如果是axios请求,直接触发axois方法") }, // 请求 getMsg(arges) { getResource(1).then(response => { }) },