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

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

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入門】Ajaxとは?仕組み・特徴・XMLHttpRequestを初心者向けにわかりやすく解説

この記事で分かること Ajaxとは何か(技術の組み合わせで成り立つ概念) 非同期通信の仕組みとメリット XMLHttpRequestの役割と特徴 Googleマップやサジェストで使われる理由 Ajax …

【JavaScript入門】XMLHttpRequest(XHR)の使い方|GET・POSTリクエストの実装方法を初心者向けに解説

この記事で分かること XMLHttpRequest(XHR)の基本構造 GETリクエストの書き方 POSTリクエストの書き方 readyState・status の扱い方 実務での注意点(非同期処理・ …

【JavaScript入門】fetch APIの基本|XHRとの違い・書き方・レスポンス処理を初心者向けに解説

この記事で分かること fetch API の基本構文 XMLHttpRequest(XHR)との違い GET・POST リクエストの書き方 レスポンスの扱い方(text / json) Promise …

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

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

【JavaScript入門】APIレスポンスを画面に反映する方法|fetchで取得したデータをDOMに表示する手順を初心者向けに解説

この記事で分かること fetch で取得したデータを画面に表示する方法 JSON を DOM に反映する基本パターン リスト表示・テーブル表示の実装例 ローディング表示・エラー表示の作り方 実務で使う …

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

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

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

執筆者: