JavaScript の非同期処理について、Promise、async/await、.then()/.catch()、try/catch などを体系的に整理し、それぞれの特徴や使い方を解説します。
JavaScript では、API 通信やデータベースアクセスなどの時間がかかる処理をスムーズに実行するために 非同期処理 が重要になります。
本記事では、Promise、.then()/.catch()、async/await、try/catch など、JavaScript の非同期処理の仕組みを整理し、それぞれの使い方を分かりやすく解説します。
✅ この記事で学べること
resolve/reject
.then()
/ .catch()
の使い方async/await
と try/catch
の仕組みPromise.all()
を使った並列処理Promise(プロミス) は非同期処理の結果を表すオブジェクトで、3 つの状態 を持ちます。
状態 (State) | 説明 |
---|---|
pending | 処理中(まだ成功も失敗もしていない状態) |
fulfilled | 成功(resolve) して結果が返ってきた状態 |
rejected | 失敗(reject) してエラーが発生した状態 |
Promise
は resolve
(成功)と reject
(失敗)の 2 つの関数を引数に取ります。
JAVASCRIPTconst myPromise = new Promise((resolve, reject) => { let success = true; setTimeout(() => { if (success) { resolve("成功しました!"); // fulfilled 状態 } else { reject("エラーが発生しました!"); // rejected 状態 } }, 2000); });
resolve(value)
→ 成功時の処理reject(error)
→ 失敗時の処理Promise
の結果を受け取るには .then()
と .catch()
を使います。
JAVASCRIPTmyPromise .then((result) => { console.log(result); // "成功しました!" }) .catch((error) => { console.error(error); // "エラーが発生しました!" });
.then(result => { ... })
→ resolve()
の結果を取得.catch(error => { ... })
→ reject()
のエラー処理async/await
は Promise
をより直感的に書ける構文です。
JAVASCRIPTasync function fetchData() { try { const result = await myPromise; console.log(result); // "成功しました!" } catch (error) { console.error(error); // "エラーが発生しました!" } } fetchData();
await
→ Promise の完了を待つasync
→ 関数を非同期化try/catch
→ エラーハンドリングが簡単.then() / .catch() | async/await | |
---|---|---|
可読性 | ネストしやすい(コールバック地獄) | 直感的でシンプル |
エラーハンドリング | .catch() を使う | try/catch で統一可能 |
連続処理 | .then() をチェーンでつなぐ | await で直感的に書ける |
✅ 結論: async/await
の方が可読性が高く、エラーハンドリングも統一できる
複数の非同期処理を並列実行する場合は Promise.all()
を使います。
JAVASCRIPTasync function fetchMultipleData() { try { const [data1, data2] = await Promise.all([ fetch("https://api.example.com/data1").then((res) => res.json()), fetch("https://api.example.com/data2").then((res) => res.json()), ]); console.log("Data1:", data1); console.log("Data2:", data2); } catch (error) { console.error("エラー:", error); } } fetchMultipleData();
✅ 複数の API を並列処理して高速化
今回は JavaScript の非同期処理 について、Promise
と async/await
の違いを整理しました。
✅ 学んだこと
Promise
は resolve
(成功)と reject
(失敗)の 2 つの関数を引数に取る.then()
/ .catch()
で Promise
を処理できるasync/await
は 可読性が向上し、直感的な記述が可能try/catch
で エラーハンドリングが簡単Promise.all()
で 並列処理を最適化できる回 | タイトル | リンク |
---|---|---|
第 1 回 | JavaScript の非同期処理 | この記事 |
第 2 回 | JavaScript の配列メソッド | 詳 細 |
第 3 回 | let と const の違いと使い分け | 詳 細 |
第 4 回 | JavaScript のスプレッド構文 | 詳 細 |
第 5 回 | JavaScript の分割代入 | 詳 細 |
第 6 回 | JavaScript の switch 文と case の使い方 | 詳 細 |
第 7 回 | JavaScript の fetch API の使い方 | 詳 細 |
第 8 回 | JavaScript の組み込みクラスを理解する | 詳 細 |
第 9 回 | JavaScript の DOM の概要と基本操作 | 詳 細 |
第 10 回 | 「JSON」とは? その基本と使い方 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。