JavaScript | continue文

JavaScript JavaScript
スポンサーリンク

では 非同期処理や API データを想定した continue の実務例 を作ります。


実務シナリオ:API から取得したユーザーデータを条件に応じて処理

想定:

  • API からユーザー配列を取得
  • 条件に合わないユーザーはスキップして、処理可能なユーザーだけ処理
  • 非同期処理なので await を使う
// 擬似的なAPIデータ取得
async function fetchUsers() {
  return [
    {id:1, name:"Alice", active:true},
    {id:2, name:"Bob", active:false},
    {id:3, name:"", active:true},
    {id:4, name:"Charlie", active:true}
  ];
}

// 擬似的に非同期でユーザー処理する関数
async function processUser(user) {
  return new Promise(resolve => {
    setTimeout(() => {
      console.log(`処理完了: ${user.name}`);
      resolve();
    }, 500);
  });
}

// メイン処理
async function main() {
  const users = await fetchUsers();

  for (const user of users) {
    // 名前が空ならスキップ
    if (!user.name) continue;

    // 非アクティブユーザーはスキップ
    if (!user.active) continue;

    // 条件を満たすユーザーだけ処理
    await processUser(user);
  }

  console.log("全ユーザー処理完了");
}

main();
JavaScript

出力例(順序通りに表示される)

処理完了: Alice
処理完了: Charlie
全ユーザー処理完了

✅ ポイント:

  • 非同期処理でも continue は普通に使える
  • 「条件に合わないユーザーはスキップ → 条件を満たすユーザーだけ await 処理」のパターンは実務でよくある
  • 配列を .filter() で絞る方法もあるが、continue は「処理中に条件チェックしてスキップ」の直感的な書き方になる

応用:外側ループがある場合(部署ごと API データ取得)

const departments = [
  {name:"営業部", api:fetchUsers},
  {name:"開発部", api:fetchUsers}
];

async function mainDepartments() {
  for (const dept of departments) {
    console.log(`--- ${dept.name} 処理開始 ---`);
    const users = await dept.api();

    let hasValidUser = false;
    for (const user of users) {
      if (!user.name || !user.active) continue;

      hasValidUser = true;
      await processUser(user);
    }

    if (!hasValidUser) {
      console.log(`${dept.name} に有効ユーザーなし、スキップ`);
      continue; // 次の部署へ
    }
  }
  console.log("全部署処理完了");
}

mainDepartments();
JavaScript

✅ ポイント:

  • 内側ループで条件チェック → continue でスキップ
  • 部署単位で「有効ユーザーなし」の場合も continue で外側ループを次に進める
  • 実務の API データ処理・バッチ処理・非同期バリデーションで使える

💡 実務的アドバイス:

  1. 非同期処理でも continue は問題なく使える
  2. 複雑な条件のときはガード節で順番に書くと可読性が高い
  3. 部署・グループ・カテゴリ単位でまとめてスキップしたい場合はフラグ + 外側 continue が便利
タイトルとURLをコピーしました