介紹:
當下網頁中的交互越來越多,很多高頻事件帶來的性能問題,已經是繞不過去的一個坎。怎麼去優化這些高頻事件,以下來基於防抖和節流的性能優化。
1、防抖和節流的概念:
防抖:就是指觸發事件後在n秒內函數只能執行一次,如果在n秒內又觸發了事件,則會重新計算函數執行時間。
節流:就是指連續觸發事件,但是在一段時間中只執行一次函數。
2、手寫防抖函數和節流函數:
2.1防抖函數
function debounce(fn,wait){
let timmer = null;
return function(){
var args = arguments;
var now = !timmer;
timmer && clearTimeout(timmer);
timmer = setTimeout(function(){
timmer = null;
},wait);
if(now){
fn.apply(this,args)
}
}
}
2.2手寫節流函數
function jl(fn,wait){
let last = 0;
return function(){
var args = arguments;
var now = Date.now();
if(now - last > wait){
fn.apply(this,args);
last = now;
}
}
}