プログラミングの用語一覧へ
このページの目次

非同期とは?

最終更新:2026/08/18

3秒でわかる

処理の完了を待たずに次へ進み、終わった時点で結果を受け取る進め方。通信やファイル読み込みで画面や処理を止めないために使います。

もう少し詳しく

どういうものか

同期処理とは、時間のかかる処理の完了を待たずに次の行へ進み、終わったタイミングで結果を受け取る進め方です。対になるのが同期処理で、こちらは終わるまでその場で止まります。ネットワーク通信、ファイルの読み書き、タイマー、データベース問い合わせなど、CPU ではなく外部の応答を待つ処理が対象になります。

なぜ必要か

ブラウザJavaScript は基本的に 1 本のスレッドで動きます。API の応答を同期的に待つと、その 1 秒の間はクリックもスクロールも受け付けず、画面が固まったように見えます。サーバー側でも同じで、1 件の DB 問い合わせを待つ間にスレッドを占有すると、同時に捌ける件数がそのまま落ちます。待っている間に別の仕事をさせるための仕組みが非同期処理です。

具体例

console.log("1"); setTimeout(() => console.log("3"), 0); Promise.resolve().then(() => console.log("2.5")); console.log("2"); // 出力は 1, 2, 2.5, 3 async function load() { const [user, posts] = await Promise.all([ fetch("/api/user").then((r) => r.json()), fetch("/api/posts").then((r) => r.json()), ]); return { user, posts }; }

Promise.all を使うと 2 本の通信が同時に走り、直列に await を並べるより速く終わります。

つまずきやすいところ

  • await を機械的に並べてしまい、独立した通信まで直列になって遅い

  • 非同期関数の中で投げた例外は呼び出し元の try では捕まらない。await するか .catch() を付ける

  • forEach の中の await は待たれない。for...of に置き換える

  • 非同期処理は「並列」や「マルチスレッド」とは別物。JavaScript は 1 スレッドのまま待ち時間を譲っているだけ
  • 似た用語との違い

    用語意味
    同期終わるまでその場で待つ
    非同期待たずに進み、後で結果を受ける
    並行複数の処理を切り替えながら進める
    並列複数の処理を物理的に同時に動かす


    覚え方

    飲食店で注文してから席で待つのが非同期、厨房の前に立って出来上がるまで動かないのが同期です。待っている間に他の客を案内できるかどうかが差になります。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地非同期プログラミング

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    モダンJavaScript:データ処理とコード設計

    36レッスン
    コース

    Node.js入門

    55レッスン
    コース

    JavaScript道場 ハレノヒ珈琲を動かす10問

    10レッスン
    JavaScriptコースの全編を見る