ホームページ >ウェブフロントエンド >jsチュートリアル >効率的な並行操作のためのowerful的なJavaScriptテクニック

効率的な並行操作のためのowerful的なJavaScriptテクニック

Barbara Streisand
Barbara Streisandオリジナル
2025-01-29 20:35:10855ブラウズ

owerful JavaScript Techniques for Efficient Concurrent Operations

私のAmazonの本を探索し、私の媒体ページをフォローして、より多くの洞察を得てください。 あなたのサポートは大歓迎です!

現代のJavaScript開発には、同時操作の習得が重要です。 この記事では、コードの効率と応答性を高めるための7つの強力な手法について説明します。

1。同時実行の場合:この方法は、複数の非同期タスクが進む前に完了する必要がある場合に優れています。 さまざまなAPIからデータを同時に取得するのに理想的です:Promise.all()

この例は、プロファイル、投稿、友人のデータを同時に取得し、処理前にすべてが解決するのを待っています。
<code class="language-javascript">const fetchUserData = async () => {
  const [profile, posts, friends] = await Promise.all([
    fetch('/api/profile'),
    fetch('/api/posts'),
    fetch('/api/friends')
  ]);

  const userData = {
    profile: await profile.json(),
    posts: await posts.json(),
    friends: await friends.json()
  };

  return userData;
};</code>

2。

堅牢なエラー処理の場合:

に似ていますが、それぞれのステータスと結果/理由を提供して、充実した約束と拒否の両方を処理します。 Promise.allSettled()これにより、成功した操作と失敗した操作の個人処理が可能になり、エラー管理が強化されます。 Promise.all()3。順次非同期データ処理のための非同期反復剤:

これらは、大規模なデータセットまたはストリームの処理に最適です。
<code class="language-javascript">const attemptOperations = async () => {
  const results = await Promise.allSettled([
    fetch('/api/operation1'),
    fetch('/api/operation2'),
    fetch('/api/operation3')
  ]);

  results.forEach((result, index) => {
    if (result.status === 'fulfilled') {
      console.log(`Operation ${index + 1} succeeded:`, result.value);
    } else {
      console.log(`Operation ${index + 1} failed:`, result.reason);
    }
  });
};</code>

これにより、大きなファイルを断片的に処理することにより、ブラウザを圧倒するのが防止されます。

4。 CPU集約型タスクをオフロードするためのWebワーカー:バックグラウンドスレッドへの計算上の高価なタスクを委任し、UIの応答性を維持する:

これにより、メインスレッドはユーザーインタラクションのために無料になります。
<code class="language-javascript">async function* readFileChunks(file, chunkSize = 64 * 1024) {
  const reader = file.stream().getReader();
  let { done, value } = await reader.read();
  while (!done) {
    yield value;
    ({ done, value } = await reader.read());
  }
}

async function processFile(file) {
  for await (const chunk of readFileChunks(file)) {
    // Process each chunk
    console.log('Processing chunk:', chunk.length, 'bytes');
  }
}</code>

5。非同期操作のキャンセルの場合:

必要に応じてネットワークリクエストなどの継続的な操作をきれいにキャンセルします。 これにより、無駄なリソースが防止され、効率が向上します

<code class="language-javascript">// Main script
const worker = new Worker('worker.js');
worker.postMessage({ data: complexData });
worker.onmessage = function(event) {
  console.log('Processed result:', event.data);
};

// worker.js
self.onmessage = function(event) {
  const result = performComplexCalculation(event.data);
  self.postMessage(result);
};</code>
6。複雑な非同期フローを管理するためのジェネレーター:

複雑な非同期シーケンスを制御するための一時停止可能な関数を作成します:

これにより、非同期操作に対する構造化された制御が提供されます AbortController7。非同期データストリームを繰り返すための非同期ジェネレーター:

ジェネレーターを組み合わせ、柔軟な非同期反復のための
<code class="language-javascript">const controller = new AbortController();
const signal = controller.signal;

fetch('/api/data', { signal })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(err => {
    if (err.name === 'AbortError') {
      console.log('Fetch aborted');
    } else {
      console.error('Fetch error:', err);
    }
  });

controller.abort(); // Cancel the fetch</code>

これは、パギン化されたAPIまたはその他のストリーミングデータを処理するのに最適です。

適切なテクニックを選択することは、プロジェクトの特定のニーズに依存します。 これらの方法を習得することにより、JavaScriptアプリケーションのパフォーマンスとユーザーエクスペリエンスを大幅に強化できます。 JavaScriptの風景は常に進化しています。継続的な学習は、先に進むための鍵です。


101冊の本

Aarav Joshiが共同設立した101冊の本は、AIを使用して高品質の本を手頃な価格にします。 AmazonでGolang Clean Code Bookを見つけてください。その他のタイトルと特別割引については、Aarav Joshiを検索してください!私たちの創造物

投資家セントラル|投資家セントラルスペイン語|投資家セントラルドイツ語|スマートリビング|エポック&エコー|不可解な謎| Hindutva |エリート開発| JSスクール

私たちは中程度
にいます

Tech Koala Insights |エポックとエコーの世界|投資家セントラルメディア|不可解なミステリーミディアム| Science&Epochs Medium |現代のヒンドゥートバ

以上が効率的な並行操作のためのowerful的なJavaScriptテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。