⏳ 6-1. async / await の基本

✅ 要点まとめ


🟢 基本の書き方(具体例)

// ファイル名: fetchData.ts
// API からデータを取得する非同期関数
export async function fetchData(): Promise<string> {
  const response = await fetch('<https://api.example.com/data>');
  if (!response.ok) {
    throw new Error('データ取得失敗');
  }
  const data = await response.json();
  return data.message; // API の戻りが { message: "Hello" } の場合
}


【呼び出し側の例 (Composition API)】

<!-- ファイル名: MyComponent.vue -->
<template>
  <div>
    <p v-if="loading">Loading...</p>
    <p v-else>{{ message }}</p>
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { fetchData } from './fetchData';

// メッセージとローディング状態を ref で管理
const message = ref<string>('');
const loading = ref(true);

// データ取得関数(非同期)
const loadData = async () => {
  try {
    const result = await fetchData();
    message.value = result;
  } catch (error) {
    console.error('エラー:', error);
    message.value = '取得に失敗しました';
  } finally {
    loading.value = false;
  }
};

// マウント時にデータを取得
onMounted(() => {
  loadData();
});
</script>


🟡 async / await の動作説明

構文 役割
async function 非同期関数を定義する。戻り値は Promise
await Promise の完了を待つ。
try...catch エラーを捕まえて安全に処理する。
finally 成功しても失敗しても最後に実行する処理。

🟣 よくある間違いと注意点

よくあるミス 正しい書き方
await だけ使って async なし 必ず async function の中で使う
エラーを catch していない try...catch で囲む
Promise の戻りをそのまま使う await で解決結果を取り出す