JavaScript-関数手ぶれ防止と関数節流
1053 ワード
関数の手ぶれ補正と関数の節流
関数の手ぶれ防止と関数の節流は、JavaScriptが高周波イベントを処理する際の処理手段である.
ファンクション
関数の手ぶれ防止:「複数の信号」を「単一の信号」に変換し、Javascriptでは、イベントが頻繁に発生し、イベントがトリガされた後、イベントが実行されますが、この期間内に、またこのイベントをトリガしたら、再び時間を計測します.
応用シーン:
関数の流れ:関数の流れは一定のイベント内で、複数のトリガイベントが一回のコールバック関数だけで実行されます.(イベントがトリガされている場合は、一定時間ごとに1回のコールバックを実行するのに相当します)
応用シーン:
関数の手ぶれ防止と関数の節流は、JavaScriptが高周波イベントを処理する際の処理手段である.
ファンクション
関数の手ぶれ防止:「複数の信号」を「単一の信号」に変換し、Javascriptでは、イベントが頻繁に発生し、イベントがトリガされた後、イベントが実行されますが、この期間内に、またこのイベントをトリガしたら、再び時間を計測します.
応用シーン:
input
、submit
function debounce (fn, delay){
let timer = null;
return function () {
timer && clearTimeout(timer);
let self = this, args = arguments;
timer = setTimeout(function () {
fn.apply(self, args);
}, delay || 1000);
}
}
関数の流れ関数の流れ:関数の流れは一定のイベント内で、複数のトリガイベントが一回のコールバック関数だけで実行されます.(イベントがトリガされている場合は、一定時間ごとに1回のコールバックを実行するのに相当します)
応用シーン:
mousemove
、resize
function throttle(fn, delay) {
let flag = true, timer = null;
return function () {
if (!flag) return;
flag = false;
let self = this, args = arguments;
timer = setTimeout(function () {
flag = true;
fn.apply(self, args);
}, delay || 500);
};
}