在实际项目中,总会遇到一些函数频繁调用的情况,比如window.resize,mouseover,上传进度类似的触发频率比较高的函数,造成很大的性能损耗,这里可以使用节流函数来进行性能优化,主要是限制函数被频繁调用的解决方案:
let throttle = function(fn,interval){let __self = fn,timer,firstTime = true;return function(){var args = arguments,__me = this;if(firstTime){__self.apply(__me,args);return firstTime = false;}if(timer){return false;}//先执行了一次,firstTime是false,然后500毫秒之后利用定时器再次执行。timer = setTimeout(function(){clearTimeout(timer);timer = null;__self.apply(__me,args);},interval||500)} }window.onresize = throttle(function(){console.log(1) },500)
此函数可以触类旁通,throttle是个高阶函数,参数输入是个函数【该频繁调用的函数】以及触发时间,第一次触发有个只执行一次的方法,后面接着就是定时器触发函数。节流函数的本质就是利用定时器的延迟进行函数触发。
【完】
后来我才知道,他并不是我的花。只是我恰好途径了他的盛放。