为了节省前端资源,很多时修是需要对事件或执行方法进行优化的,比如下拉事件,其实没必要触发这么频繁的,特别是逻辑或计算比较复杂时,更为重要,下面就对滚动条的下拉事件进行了监听,然后利用闭包和延时,进行了优化,事件频繁触发,但执行函数一秒只执行一次,大大降低了前端对资源的浪费:
下面分两种情况介绍,一种是触发后执行,一种是触发即执行
window.οnscrοll=scroll(function(){console.log(window.scrollY);},1000)
//触发后执行
function scroll2(m,t)
{
console.log("执行了SCOLL函数")
var timer=null;
var content,args;
return function (){
console.log("timer="+timer);
context=this, args = arguments;
clearTimeout(timer)
timer=setTimeout(function(){
m.apply(window);
},t)
}
}
//立即执行版
function scroll(func,wait) {
let timeout;
return function () {
let context = this;
let args = arguments;
if (timeout) clearTimeout(timeout);
let callNow = !timeout;
timeout = setTimeout(() => {
timeout = null;
}, wait)
if (callNow) func.apply(context, args)
}
}