ホーム › Q&A掲示板 › JavaScriptの非同期処理(Promise)の書き方について
JavaScript

JavaScriptの非同期処理(Promise)の書き方について

yamada123📅 2026-07-23💬 3件の回答

JavaScriptで非同期処理を書くとき、コールバックのネストが深くなって読みづらくなってしまいます。Promiseやasync/awaitを使うと良いと聞いたのですが、具体的な書き方の違いがよくわかりません。

例えば「1秒待ってから値を返す処理」を順番に3回実行したい場合、どう書くのがモダンなやり方でしょうか?

回答 3件

✔ ベストアンサー

async/awaitを使うのが今の主流です。まず、待つ処理をPromiseで包みます。

function wait(v) {
  return new Promise(resolve => {
    setTimeout(() => resolve(v), 1000);
  });
}

これをasync関数の中でawaitすると、同期処理のように上から順に書けます。

async function run() {
  const a = await wait(1);
  const b = await wait(2);
  const c = await wait(3);
  console.log(a, b, c);   // 1秒ごとに 1 2 3
}
run();

ポイントは、awaitはasync関数の中でしか使えないことです。ネストが消えて格段に読みやすくなります。

engineer_k👍 12

補足です。エラー処理はtry/catchでまとめて書けます。

async function run() {
  try {
    const a = await wait(1);
  } catch (e) {
    console.error(e);
  }
}

並列でよいならPromise.all([wait(1), wait(2)])を使うと3秒→1秒に短縮できますよ。

js_fan👍 4

.then()のチェーンでも書けますが、分岐やエラー処理が増えるとasync/awaitのほうが圧倒的に読みやすいので、新規コードならasync/await推奨です。

mentor_s👍 2
▶ progoのエディタでコードを試す
インストール・登録不要。ブラウザ上でそのままコードを実行して確認できます。