Web サイトにアクセスし、検索バーに入力したときに、遅延を引き起こすことなくリアルタイムで候補がポップアップ表示されることに気づいたことがありますか?あるいは、フォームに記入し、入力しているときに「ユーザー名はすでに使用されています」というメッセージが表示されたことがあるかもしれません。これらのシームレスなエクスペリエンスの背後には、現代の Web 開発の隠れた強力なヒーロー、デバウンス があります。
デバウンシングは、指定した非アクティブ期間が経過した後にのみ関数が実行されるようにするプログラミング手法です。検索バーに入力しているところを想像してください。デバウンスを行わないと、キーストロークごとに関数呼び出しがトリガーされ、冗長なリクエストでシステムに負荷がかかる可能性があります。デバウンスは、関数を実行する前に入力の一時停止を待ち、リクエストが 1 つだけ送信されるようにすることでこの問題を解決します。
その核心は、関数の実行頻度を制御することです。しかし、理解を容易にするために、ドアベルの例を見てみましょう。 3 秒間何も操作しないとドア ビールが鳴るとします。最初のベルが鳴った後、ユーザーが何度でもベルを鳴らそうとした場合、さらに 3 秒経過しない限りベルは鳴りません。
JavaScript では、デバウンスは通常、入力、スクロール、サイズ変更などのイベント リスナーで使用されます。基本的な実装は次のとおりです:
function debounce(callback, delay) { let timeoutId; return (...args) => { clearTimeout(timeoutId); timeoutId = setTimeout(() => { callback(...args); }, delay); }; }
このコードのさまざまな要素を理解してみましょう:
function debounce(callback, delay) { let timeoutId; return (...args) => { clearTimeout(timeoutId); timeoutId = setTimeout(() => { callback(...args); }, delay); }; }
const handleSearch = debounce((query) => { fetch(`https://api.example.com/search?q=${query}`) .then((response) => response.json()) .then((data) => console.log(data)); }, 500); document.getElementById("search").addEventListener("input", (e) => { handleSearch(e.target.value); });
.
.
.
.
.
ご提案をお待ちしております
このブログを改善するための洞察や追加のヒントがありますか?ぜひフィードバックを共有してください。あなたの意見は、将来のコンテンツを強化するために非常に貴重です。
以上がJS でのデバウンス: より優れた Web アプリの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。