応答性の高い UI パフォーマンスのための非同期反復
特に大規模な配列や API 呼び出しでの反復タスク中に UI がブロックされるのを避けるために、次の 2 つがあります。主なアプローチ: Web ワーカーを使用しない非同期手法の使用と Web ワーカーの組み込み。
Web ワーカーを使用しない非同期反復
コードが UI との対話を必要としない場合は、次のことが可能です。非同期反復には setTimeout() を利用します。これにより、ブラウザに他のイベントを処理する機会を与えながら、配列のチャンクを処理できるようになります。
<code class="javascript">function processLargeArray(array) { var chunk = 100; var index = 0; function doChunk() { var cnt = chunk; while (cnt-- && index < array.length) { // Process array[index] ++index; } if (index < array.length) { setTimeout(doChunk, 1); // Set Timeout for async iteration } } doChunk(); }</code>
Web ワーカーを使用した非同期反復
Web ワーカーが提供するものポストメッセージを介した計算と通信のための隔離された環境。これらは、UI に関係のないタスクに最適です。
Web ワーカーの作成:
<code class="javascript">// Create a Worker script file // worker.js: self.addEventListener('message', function(e) { // Perform computations var result = computeResult(e.data); self.postMessage(result); }); // Create a Worker var worker = new Worker('worker.js');</code>
ワーカーとの通信:
<code class="javascript">worker.onmessage = function(e) { // Handle post message from worker // Update UI or process results }; worker.postMessage(data); // Send data to worker</code>
考慮事項
Web Workers を使用しない場合:
Web ワーカーの場合:
以上が非同期反復で応答性の高い UI パフォーマンスを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。