scrollイベントページジッタ--関数スロットルと関数ジッタ防止
1026 ワード
resize,scroll,hoverなどのjsイベントがトリガーされるとバインドの方法が頻繁に呼び出され,ページにパフォーマンスの問題が発生するため,関数スロットルを用いてこの問題を解く.
考え方:イベントが常にトリガーされている場合でも、一定のイベント間隔で1回しか実行されません.
スロットル関数をカプセル化することもできます.私が使っているes 6構文:
考え方:イベントが常にトリガーされている場合でも、一定のイベント間隔で1回しか実行されません.
//scroll 2s,do somthing
window.addEventListener('scroll',function(){
var timer ;// ,
var startTime = new Date();
return function(){
var curTime = new Date();
if(curTime - startTime >= 2000){
timer = setTimeout(function(){
console.log('do somthing')
},500);
startTime = curTime;
}
}
}());
スロットル関数をカプセル化することもできます.私が使っているes 6構文:
/**
*
* @param fn Function
* @param delay String ms
* */
delayScrollFunc(fn, delay) {
const now = new Date().getTime();
if (now - this.lastScrollCall < delay) return;
this.lastScrollCall = now;
setTimeout(() => {
fn();
}, 60); // , ( scroll)
},