ゆめさくエンジニア研究所

Promise と async/await は何のためにありますか

時間のかかる処理を、画面を止めずに扱うための仕組み。動く順番を例で示し、失敗の受け方まで答えます。

短い答え

  • 通信のように終わるまで時間がかかる処理を、待つあいだ画面を止めずに扱うためにあります。
  • Promise は「あとで結果が入る箱」で、成功か失敗のどちらかで終わります。
  • async/await は、その Promise を上から順に読める形で書くための書き方で、失敗は try と catch で受けます。

深掘りの答え

動く順番

await で待つのは、その関数の中だけです。関数の外の処理は先に進みます。

JavaScript

function wait(value) {
  return new Promise((resolve) => {
    setTimeout(resolve, 100, value);
  });
}

async function main() {
  console.log("1 開始");
  const msg = "2 届いた";
  console.log(await wait(msg));
}

main();
console.log("3 先に進む");
1 開始
3 先に進む
2 届いた

「3 先に進む」が「2 届いた」より先に出るのが要点です。待っているあいだもほかの処理が動くので、画面が固まりません。

失敗の受け方

Promise が失敗すると、await の所で例外として投げられます。try と catch で受けて、利用者に伝える文を出します。

JavaScript

async function load() {
  const err = new Error("失敗");
  try {
    await Promise.reject(err);
  } catch (error) {
    console.log("受け取った");
    console.log(error.message);
  }
}

load();
受け取った
失敗

catch を書かないと、失敗が誰にも受け取られず、画面には何も出ないまま止まって見えます。

面接官が見ている点

  • 「非同期」を言葉だけでなく、動く順番で説明できるか
  • await が待たせるのは関数の中だけ、と分かっているか
  • 失敗したときにどうするかを、自分で作った画面の例 (読み込み中の表示、もう一度試すボタンなど) で話せるか

確認日 2026年10月17日

面接問題の一覧へ戻る