この記事では主に JavaScript 関数のスロットルの詳細な説明と、例を含む関連情報を紹介します。必要な方は、
JavaScript 関数のスロットルの詳細な説明を参照してください。インターフェースのレンダリングとページ上の JavaScript コードの実行を同時に処理します (簡単に説明すると、ブラウザーまたは JavaScript 実行環境は、Ajax 非同期コールバック、ネイティブ通信など、シングルスレッドではありません)ハイブリッド フレームワークでは、イベント キュー、CSS 実行スレッドなどはすべてマルチスレッド Thread 環境ですが、ES6 では一部の非同期状況を軽減するために Promise クラスが導入されました。したがって、JavaScript コードが大量の計算を必要とするメソッドを実行すると、UI スレッドがブロックされ、これによりユーザーの応答がフリーズする可能性があり、深刻な場合には、ブラウザーはページが応答しないかどうか、およびページを強制的に応答するかどうかを尋ねるプロンプトを表示することがあります。近い。たとえば、Web ページのページ スクロール イベント、モバイル デバイスのスライドやズーム イベントなどです。重大なパフォーマンスの問題がない場合でも、パフォーマンスの最適化
の観点から、短期間に複数回トリガーされる大規模な処理時間をオフロードする必要があります。 UI スレッドが長すぎるコードを実行するのを効果的に防ぐ方法は、すべてのユーザー インタラクション アプリケーションが考慮する必要がある問題です。同じ問題がクライアントにもあります
Android
関数スロットルを使用するための中心的なテクニックは、タイマーのセグメント化された計算を使用することです。具体的な実現方法としては大きく分けて2つの考え方があります。
・方法1
1. この実装方法のアイデアは理解しやすいです。50ミリ秒などの間隔を設定し、この時間に基づいてタイマーを設定します。セカンダリ トリガー イベント間の間隔が 50 ミリ秒未満の場合は、このタイマーをクリアして新しいタイマーを設定し、イベントがトリガーされてから 50 ミリ秒以内にトリガーが繰り返されなくなるまでこれを繰り返します。コードは次のとおりです。
function debounce(method){ clearTimeout(method.timer); method.timer=setTimeout(function(){ method(); },50); }
・方法2
2. 2番目の実装方法のアイデアは最初の実装方法とは少し異なります。50ミリ秒などの間隔時間を設定し、この時間を基準としてイベントを着実に分離します。トリガー状況、つまり、複数のイベントが 100 ミリ秒以内に連続してトリガーされた場合、それらは 50 ミリ秒の安定した間隔でのみ実行されます。コードは次のとおりです:
var oldTime=new Date().getTime(); var delay=50; function throttle1(method){ var curTime=new Date().getTime(); if(curTime-oldTime>=delay){ oldTime=curTime; method(); } }
メソッド 2 については、同じ関数を記述する別の方法を提供します。
var timer=undefined,delay=50; function throttle2(method){ if(timer){ return ; } method(); timer=setTimeout(function(){ timer=undefined; },delay); }
以上がJavaScript関数のスロットルの詳細説明とメソッド例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。