【JavaScript初心者向け】Promiseとresolveによる非同期処理について
Promiseとは?
JavaScriptで非同期処理を行う際に使われるオブジェクトです。非同期処理とは、すぐに結果が得られない処理のことを指します。例えば、Webサーバーからデータを取得する際や、一定時間後に何かを実行する場合などがこれにあたります。Promise
は、このような非同期処理が完了した後に何が起こるかを管理するために使われます。
Promise
には主に3つの状態があります:
- Pending(保留中):
- 非同期処理がまだ完了していない状態です。
- Fulfilled(履行済み):
- 非同期処理が成功し、完了した状態です。
- Rejected(拒否された):
- 非同期処理が何らかの理由で失敗した状態です。
resolveとは?
resolve
はPromise
内で使用される関数の一つで、Promise
を「Fulfilled(履行済み)」の状態に移行させます。つまり、非同期処理が成功したときにresolve
を呼び出すことで、「この処理はうまくいった」と伝えることができます。
Promiseの基本的な使い方
Promise
を生成する基本的な構文は以下の通りです:
let promise = new Promise(function(resolve, reject) { // 非同期処理をここに書く // 成功した場合 resolve(result); // 失敗した場合 reject(error); });
この例では、new Promise
を使って新しいPromise
を作成しています。Promise
のコンストラクタには関数が渡され、この関数はresolve
とreject
の2つの引数を受け取ります。
resolve(result)
: 非同期処理が成功した場合に呼び出されます。result
は非同期処理の結果です。reject(error)
: 非同期処理が失敗した場合に呼び出されます。error
はエラーの内容です。
Promiseの使用例
Webサーバーからデータを取得する簡単な例を考えてみましょう:
let dataFetching = new Promise(function(resolve, reject) { // データ取得の非同期処理 fetch("https://example.com/data") .then(response => response.json()) .then(data => resolve(data)) // データ取得成功 .catch(error => reject(error)); // データ取得失敗 }); dataFetching.then(data => { console.log("取得したデータ:", data); }).catch(error => { console.error("エラー発生:", error); });
この例では、fetch
を使ってWebサーバーからデータを取得し、成功した場合にはresolve
でデータを返し、失敗した場合にはreject
でエラーを返しています。そして、dataFetching
のthen
メソッドでデータが取得できた場合の処理を、catch
メソッドでエラーが発生した場合の処理を記述しています。
このように、Promise
とresolve
は非同期処理の結果を扱うための非常に便利な仕組みです。