一个跨行前端的小白菜随笔 —— 节流函数

还是之前的🌰,我们希望在缩放浏览器窗口时,能够保持平均每1S的频率执行事件调用。(即保证在1S的时间里,只执行一次操作)

mounted() {
window.addEventListener('resize',()=>{
      console.log('111');
  })

这里也是需要使用定时器,可以这样来设计:

缩放浏览器会执行resize事件,当第一次执行resize时,设置好定时1S后执行回调。在这1S内,如果多次触发resize事件,都不执行回调操作。当1S之后,还有resize事件触发,则再次设定1S,执行回调操作

// 节流throttle代码(定时器):
 function throttle(func, delay) {            
    let timer = null;            
    return function() {                
        let context = this;               
        let args = arguments;                
        if (!timer) {                    
            timer = setTimeout(function() {                        
                func.apply(context, args);                        
                timer = null;                    
            }, delay);                
        }            
    }        
}        
function handle() {            
    console.log(Math.random());        
}        
window.addEventListener('resize', throttle(handle, 1000));

 

posted @ 2020-10-24 16:11  风中逆羽  阅读(118)  评论(0)    收藏  举报