現役システムエンジニアの備忘録

技術スキルや用語などの記録を残していきます

Ajax / fetch / API(非同期処理)

【JavaScript入門】async/awaitの使い方|Promiseをより簡単に書ける非同期処理の基本を初心者向けに解説

投稿日:

この記事で分かること

  • async / await の基本構文
  • Promise をより読みやすく書く方法
  • fetch と組み合わせた実用的な書き方
  • try/catch によるエラー処理
  • 実務での async / await の使いどころ

async / await は、Promise をより直感的で読みやすく扱うための構文で、現代の JavaScript では欠かせない存在です。
この記事では、async / await の基本から fetch との組み合わせ、try/catch を使ったエラー処理、そして実務での使いどころまで、非同期処理を理解するうえで重要なポイントを分かりやすく解説します。



async / await とは?

async / await は、Promise をより簡単に書くための構文です。
非同期処理を「同期処理のように」書けるため、コードが非常に読みやすくなります。

Promisethen / catch を使うとこうなります:


fetch("/api")
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));

async / await を使うと、これが次のように書けます:


async function load() {
  try {
    const res = await fetch("/api");
    const data = await res.json();
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

圧倒的に読みやすい のが async / await の最大のメリットです。



async の基本

関数の前に async を付けると、その関数は
必ず Promise を返す関数になります。


async function hello() {
  return "Hello";
}

hello().then(msg => console.log(msg)); // "Hello"

await の基本

awaitPromise の完了を待つ ためのキーワードです。
async 関数の中でしか使えません。


const result = await fetch("/api");

await を使うと、非同期処理の結果を変数に代入できます。

fetchasync / await の組み合わせ(最重要)


async function loadData() {
  const res = await fetch("https://jsonplaceholder.typicode.com/posts/1");
  const data = await res.json();
  console.log(data);
}

loadData();

fetchPromise を返すため、await と非常に相性が良いです。

try/catch でエラー処理を統一できる

async / await の最大のメリットの1つが、
エラー処理を try/catch に統一できる ことです。


async function loadData() {
  try {
    const res = await fetch("/api");

    if (!res.ok) {
      throw new Error("HTTPエラー: " + res.status);
    }

    const data = await res.json();
    console.log(data);

  } catch (err) {
    console.error("エラー:", err);
  }
}

fetch の「HTTPエラーは例外にならない」という特徴も
try/catch でまとめて扱えるようになります。

複数の非同期処理を順番に実行する


async function process() {
  const a = await fetch("/a");
  const b = await fetch("/b");
  const c = await fetch("/c");
  console.log("完了");
}

Promise チェーンよりも圧倒的に読みやすいです。

複数の非同期処理を同時に実行する(Promise.all


async function loadAll() {
  const [a, b, c] = await Promise.all([
    fetch("/a"),
    fetch("/b"),
    fetch("/c")
  ]);

  console.log("3つ同時に完了");
}

「同時に実行 → 全部終わるのを待つ」という処理も簡単に書けます。



async / await に関するよくある質問(FAQ)

Q1

awaitasync 関数の外で使えますか?

A

使えません。awaitasync 関数の中でのみ使用できます。

Q2

async 関数は何を返しますか?

A

必ず Promise を返します。return の値は Promise.resolve() で包まれます。

Q3

fetch のエラーは try/catch で捕まえられますか?

A

ネットワークエラーは捕まえられますが、HTTPエラーは自分でチェックする必要があります。

Q4

Promiseasync / await のどちらを使うべきですか?

A

基本は async / await が推奨されます。コードが読みやすく、エラー処理も統一できるためです。



まとめ

async / awaitPromise をより簡単に扱うための構文で、
fetch と組み合わせると最強 です。

  • asyncPromise を返す関数になる
  • awaitPromise の完了を待つ
  • try/catch でエラー処理を統一できる
  • fetch のレスポンス処理が読みやすくなる

非同期処理を扱う現代の JavaScript では、
async / await は必須のスキルです。



関連記事

【JavaScript入門】Promiseの基礎|非同期処理の仕組み・then/catchの使い方を初心者向けにわかりやすく解説

この記事で分かること Promiseとは何か(非同期処理の基本) Promiseの3つの状態(pending / fulfilled / rejected) then / catch の使い方 コール …

【JavaScript入門】外部APIを使った実例|天気API・GitHub APIで学ぶ実践的なデータ取得方法

この記事で分かること 外部APIとは何か 天気APIを使ったデータ取得の実例 GitHub APIを使ったユーザー情報取得 fetch と async / await の実践的な使い方 APIデータを …

【JavaScript入門】fetchでPOSTする方法|JSON送信・ヘッダー設定・レスポンス処理を初心者向けに解説

この記事で分かること fetch API で POST リクエストを送る方法 JSON を送信するためのヘッダー設定 レスポンスの受け取り方(json) エラー処理(HTTPエラー・ネットワークエラー …

【JavaScript入門】APIのエラー処理|HTTPステータス・例外処理・fetch/XHRの違いを初心者向けに解説

この記事で分かること API通信で発生するエラーの種類 HTTPステータスコードの判定方法 fetch と XHR のエラー処理の違い try/catch を使った例外処理 実務でのエラー処理のベスト …

【JavaScript入門】CORSとは?仕組み・エラー原因・解決方法を初心者向けにわかりやすく解説

この記事で分かること CORS(クロスオリジン)とは何か なぜブラウザは他ドメインへのアクセスを制限するのか Access-Control-Allow-Origin の仕組み プリフライトリクエスト( …

このブログは Xserver 上の WordPress で運用しています。
表示速度が速く、安定しているのでブログ初心者にもおすすめです。

レンタルサーバー エックスサーバー

-Ajax / fetch / API(非同期処理)

執筆者: