ガラシのパルプンテ頼み

地方産限界エンジニアのグローバル独り言

【JavaScript初心者向け】Promiseとresolveによる非同期処理について

Promiseとは?

JavaScriptで非同期処理を行う際に使われるオブジェクトです。非同期処理とは、すぐに結果が得られない処理のことを指します。例えば、Webサーバーからデータを取得する際や、一定時間後に何かを実行する場合などがこれにあたります。Promiseは、このような非同期処理が完了した後に何が起こるかを管理するために使われます。

Promiseには主に3つの状態があります:

  1. Pending(保留中):
    • 非同期処理がまだ完了していない状態です。
  2. Fulfilled(履行済み):
    • 非同期処理が成功し、完了した状態です。
  3. Rejected(拒否された):
    • 非同期処理が何らかの理由で失敗した状態です。

resolveとは?

resolvePromise内で使用される関数の一つで、Promiseを「Fulfilled(履行済み)」の状態に移行させます。つまり、非同期処理が成功したときにresolveを呼び出すことで、「この処理はうまくいった」と伝えることができます。

Promiseの基本的な使い方

Promiseを生成する基本的な構文は以下の通りです:

let promise = new Promise(function(resolve, reject) {
  // 非同期処理をここに書く

  // 成功した場合
  resolve(result);

  // 失敗した場合
  reject(error);
});

この例では、new Promiseを使って新しいPromiseを作成しています。Promiseのコンストラクタには関数が渡され、この関数はresolverejectの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でエラーを返しています。そして、dataFetchingthenメソッドでデータが取得できた場合の処理を、catchメソッドでエラーが発生した場合の処理を記述しています。

このように、Promiseresolveは非同期処理の結果を扱うための非常に便利な仕組みです。