【ひどうきしょり】
非同期処理(async/await) とは?
最終更新:
💡 結果を待つ順序を、読みやすく書く
JavaScriptでPromiseの結果を扱うための構文。awaitが待つ範囲、処理の順序、複数処理のまとめ方、失敗への対応を解説します。
📌 このページのポイント
async/awaitは、待たずに動く仕組み?
結果を待つコードを読みやすく書く構文だよ。async関数はPromiseを返し、awaitはその関数の続きを一時停止する。処理が成功したら結果を受け取り、失敗したらエラーとして扱えるんだ。
awaitで、アプリ全体が止まる?
その関数の続きが待つ間、ほかの実行できる処理へ制御を渡せるよ。たとえば通信の完了を待つ使い方がある。ただし、非同期の構文にしただけで、すべての処理が待ち時間なく動くという意味ではないんだ。
重い計算も、asyncを付ければ大丈夫?
二つの通信は、順番にawaitするの?
失敗したら、どうするの?
awaitする処理をtry/catchで扱う等、失敗したときの対応を書くよ。Promise.allはどれかが失敗すると失敗になるけれど、ほかの処理を自動で取り消すわけではない。必要な結果と失敗の扱いを決めよう。
もっと詳しく知りたい人へ
全部の結果を、失敗分も含めて知りたいときは?
Promise.allSettledはすべてが成功か失敗に確定するまで待ち、それぞれの状態を返します。Promise.allとは用途が違います。大量の処理を一度に開始してよいかは、相手の制限や実行環境の負荷も考えて判断します。
awaitは必ずasync関数の中に書く?
async関数内で使うほか、JavaScriptのモジュールではトップレベルのawaitも使えます。通常のスクリプト等とは条件が違うため、モジュール形式や実行環境を確認します。
まとめ:ざっくりこれだけ覚えればOK!
「async/await」って出てきたら「非同期処理の結果を待つ順序を、読みやすく書く構文」と思えばだいたいOK!
📖 おまけ:英語の意味
「async / await」 = 非同期の関数 / 結果を待つ
💬 ここではJavaScriptの構文を説明します。非同期処理はasync/awaitだけに限らず、コールバックやPromiseのthen等で結果を扱う書き方もあります。