なんで非同期が必要なの?
API呼び出しに1秒、ファイル読み込みに0.5秒かかるとして、同期処理なら合計1.5秒待つ。非同期なら両方を同時に開始して、最も遅い1秒で完了する。Webアプリでは画面が固まらないために非同期が必須。Node.jsはシングルスレッドだけど、非同期I/Oで何千もの同時接続を処理できるんだよ
Promiseって何?
「将来の結果を約束するオブジェクト」だよ。fetch('/api/users')はPromiseを返す。結果が返ってきたら.then()で処理、エラーなら.catch()で処理。コールバック地獄(ネストが深くなる問題)を解決するために生まれた。async/awaitはPromiseをさらに使いやすくした構文だね
async/awaitの書き方は?
「async function getUsers() { const res = await fetch('/api/users'); const data = await res.json(); return data; }」のように書くよ。awaitの箇所で処理が「待つ」ように見えるけど、実際にはイベントループに制御を返して他の処理を進めている。見た目は同期的で読みやすいのがメリットだね
よくあるミスは?
①awaitを忘れてPromiseオブジェクトをそのまま使う、②直列で書くべきでない場面で順番にawaitする(Promise.allで並列実行すべき)、③エラーハンドリングの漏れ(try-catchで囲むかcatchをチェーンする)。特にPromise.allは「独立した複数の非同期処理を並列実行」するときに必須だよ