JavaScript の非同期ループ: for...of と forEach

PHPz
リリース: 2024-08-29 10:33:21
オリジナル
538 人が閲覧しました

Async Loops in JavaScript: for...of vs forEach

JavaScript の非同期機能は非常に優れていますが、これらの非同期タスクを処理する適切なループを選択すると、大きな違いが生まれます。 for...of と forEach の違いを楽しく解説してみましょう?

1. for...of 非同期関数を使用したループ
for...of ループは、あなたが 1 つのタスクを完了するのを辛抱強く待ってから、次のタスクを開始する非常に勤勉な友人のようなものだと想像してください。次の作業を開始する前にコーヒーが淹れるのを待つようなものです。

for (const item of items) {
  await doSomethingAsync(item);
}
ログイン後にコピー

それぞれが遅延付きで解決された Promise を返すタスクの配列があるとします。

function doSomethingAsync(item) {
  return new Promise((resolve) => {
    setTimeout(() => resolve(`Processed ${item}`), 1000);
  });
}

async function processItemsSequentially(items) {
  for (const item of items) {
    try {
      const result = await doSomethingAsync(item);
      console.log(result);
    } catch (error) {
      console.error(`Oops! Error with ${item}:`, error);
    }
  }
}

const items = ['Task 1', 'Task 2', 'Task 3'];
processItemsSequentially(items);
ログイン後にコピー

processItemsSequentially は、各 doSomethingAsync 呼び出しが完了するのを待ってから、次の項目に進みます。

気に入っていただける理由:

?️ 忍耐: 各非同期タスクが完了するまで待ってから次に進みます。すべてはその規則正しい生活です。

?エラー処理: ループ内でエラーを簡単にキャッチして処理できます。

?こんな用途に最適: 物事を順番に終わらせる必要があるとき – たとえば、生地を混ぜる前にケーキを焼くことができない食事を調理するとき XD.


2.非同期関数を使用した forEach
反対に、forEach は、同時にタスクを開始する友達の集まりのようなものです。彼らは興奮していて、できるだけ早く終わらせたいと思っています。彼らは、誰かが他の人より先に終了しても気にしません。彼らはただそれに挑戦するだけです!

items.forEach(async (item) => {
  await doSomethingAsync(item);
});
ログイン後にコピー

同じ doSomethingAsync 関数を forEach で使用してみましょう:

async function processItemsConcurrently(items) {
  items.forEach(async (item) => {
    try {
      const result = await doSomethingAsync(item);
      console.log(result);
    } catch (error) {
      console.error(`Whoops! Issue with ${item}:`, error);
    }
  });
}

const items = ['Task A', 'Task B', 'Task C'];
processItemsConcurrently(items);
ログイン後にコピー

processItemsConcurrently は、すべての doSomethingAsync 呼び出しを同時に開始するため、すべてのタスクが並行して実行されます。

楽しい理由:

?‍♂️?‍♀️ 並列実行: すべてのタスクが一度に開始されるため、非常に高速ですが、少し混乱する可能性があります。

✂️ より単純な構文: 多くの場合、for...of よりも短くて簡潔です。

?最適な用途: 複数の API からデータを取得するなど、タスクが相互に依存せず、独立して実行できる場合。

覚えておいてください:
for...of は順番を待つ秩序ある友人です。
forEach では、同時に取り組み、物事を迅速に完了することが重要です。

for...of を使用すると、エラーを 1 つずつ見つけることができ、すっきりしています。
forEach を使用すると、複数のボールをジャグリングするなど、その場でエラーを処理できます。

for...of は少し遅いかもしれませんが、きちんとしていて整然としています。
混乱を避け、タスクが重複しない場合は、forEach の方が高速になります。

秩序と忍耐が必要か、それともスピードと興奮が必要かに基づいて、ニーズに合ったループを選択してください。 ??

以上がJavaScript の非同期ループ: for...of と forEachの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!