In JavaScript, debounce processing is a technique that prevents unnecessary execution by waiting for a certain period after frequently occurring events and then executing the function only once.
デバウンス処理とは、特定の関数が短時間に頻繁に呼び出されるのを防ぎ、一定の待機時間(遅延時間)が経過した後に一度だけ実行されるようにするテクニックです。これは、スクロールイベント、ウィンドウのリサイズ、キー入力など、頻繁に発生するイベントに対して不要な処理を削減し、パフォーマンスを向上させるために使用されます。
例えば、ユーザーが入力フィールドに文字を入力するたびに検索クエリを送信すると、サーバーに過剰なリクエストが発生する可能性があります。デバウンス処理を使用すると、ユーザーの入力が一定時間止まった後にのみ検索が実行されるようになります。
一般的な実装は、setTimeoutを使用して最後のイベントから一定時間経過した後に関数を実行し、それまでに新たなイベントが発生した場合はタイマーをリセットします。
デバウンス関数の簡単な例
JavaScript
function debounce(func, wait) {
let timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(this, args), wait);
};
}
このデバウンス関数を使用して、他の関数の実行を制御できます。
JavaScript
const handleResize = debounce(function() {
console.log('リサイズイベント後に実行');
}, 500);
window.addEventListener('resize', handleResize);
上記の例では、ウィンドウのリサイズが終わってから 500ミリ秒後に handleResize関数が実行されます。