デバウンス定義: スクロール イベントなど、短時間に連続してトリガーされるイベントの場合、アンチシェイクとは、イベント処理機能が一定の制限時間内に 1 回だけ実行されることを意味します。 手ぶれ防止については、指でバネを押すことを例に挙げてみましょう。指でバネを押し、押し続けます。指を離すまでバネは跳ね返りません。 サイズ変更の例: 関数デバウンス(fn, wait){ var タイマー = null; 戻り値 () =>{ if(タイマー !== null){ タイマーをクリアします。 } タイマー = setTimeout(fn, wait); } } 関数ハンドル(){ コンソールにログ出力します。 } window.addEventListener("resize",debounce(handle, 1000)); 上記は即時実行版ではない 即時実行バージョン 関数デバウンス(fn, wait){ timeid、flag = true とします。 戻り値 () => { タイムアウトをクリアします(timeid); if(フラグ){ 関数fn(); フラグ = false; }それ以外{ タイムID = setTimeout(()=>{ フラグ = true; }、 待って); } } } ブラウザ ウィンドウをドラッグするとサイズ変更がトリガーされますが、この時点ではハンドル関数はトリガーされません。タイマーがカウントを開始します。タイミング時間内にサイズ変更が再度トリガーされると、タイマーが再び開始されます。これの利点は、ブラウザ ウィンドウをドラッグしてサイズ変更をトリガーすると、ハンドル関数が頻繁に実行されず、必要なときにのみ実行されるため、冗長性が効果的に排除されることです。 一般的な書き方: const デバウンス = (func, 遅延 = 200) => { タイムアウト = null にする 関数を返す(){ clearTimeout(タイムアウト) タイムアウト = setTimeout(() => { func.apply(これ、引数) }、 遅れ) } } スロットル定義: 一定期間内にイベントを 1 回だけ実行します。 本来の意図は、蛇口から滴り落ちる水のように、指定された時間内に 1 回だけ実行し、頻繁な繰り返し実行を減らすことです。 検索ボックスの入力イベントなど。 タイムスタンプで計算: 関数スロットル(fn,wait){ startTime を 0 にします。 関数()を返す{ endTime を Date.now() とします。 if(終了時間-開始時間>待機){ 関数fn(); 開始時間 = 終了時間; } } } タイマー別: 関数スロットル(fn,wait){ timeid = null とします。 関数()を返す{ if(!timeid){ timeid = setTimeout(関数(){ 関数fn(); タイムID = null; }、待って) } } } 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Docker のタイムゾーンの問題とデータ移行の問題
>>: XHTML チュートリアル: 初心者のための XHTML の基礎
この記事では、JavaScriptでじゃんけんゲームを書くための具体的なコードを参考までに紹介します...
序文プロジェクトでは中間層としてNodeを使用し、Nodeのデプロイにはdockerを使用します。こ...
問題の背景業務システムのサーバ監視システムからディスク使用率が90%に達したという早期警告通知が来た...
注:記事に誤りがある場合は、メッセージを残して指摘してください。ご協力ありがとうございます。名前名前...
目次序文1. ignore を挿入2. 重複キーの更新時3. を置き換える要約する序文Mysql は...
背景: 1. データベースに通知テーブルがある あなたは見ることができますgmt_create、通知...
はじめに:今日は、サーバー上のMySQLにリモート接続したいと思います。使用するソフトウェアはNav...
Bツリーインデックス異なるストレージ エンジンでは、異なるストレージ構造を使用する場合もあります。た...
mysqldump コマンドはじめに: データベースバックアッププログラム形式: mysqldum...
目次1. 当初の需要2. 解決策3. 運河の導入と設置運河の仕組み建築インストール4. 検証1. 当...
分割線はウェブページでよく使われるデザインです。例えば、Zhihuのその他の回答をご覧ください。 こ...
この記事では、mysql8.0.11クライアントがログインできない問題の解決策を紹介します。参考まで...
目次1.MySQLデータ構造2. テーブルファイルのサイズは変更されておらず、MySQLの設計に関連...
目次MySQLを初期化するMySQL サービスをインストール + MySQL サービスを開始MySQ...
序文: Vue プロジェクトで現在のマウスの座標を取得するにはどうすればよいでしょうか。ここで共有す...