JavaScript

The Promise constructor in JavaScript is an object that represents the eventual success or failure of an asynchronous operation and manages the resulting value.

Promise [constructor]

 Promise(プロミス)コンストラクターは、非同期処理を扱うためのオブジェクトです。非同期処理とは、プログラムがすぐに結果を返さず、時間がかかる処理のことです。たとえば、ネットワークからデータを取得する場合などが該当します。

Promiseコンストラクターの基本

 Promiseを使うと、将来の結果を表現できます。Promiseは次の3つの状態を持ちます。

Pending(保留中)
まだ完了も失敗もしていない初期の状態。
Fulfilled(成功)
非同期処理が成功し、結果が得られた状態。
Rejected(失敗)
非同期処理が失敗し、エラーが発生した状態。

Promiseの使い方

 Promiseは次のようにして作成します。

JavaScript

let promise = new Promise(function(resolve, reject) {
	// 非同期処理をここに書きます
	let success = true; // これは処理が成功したかどうかを表すダミー変数です
	
	if (success) {
		resolve("処理が成功しました!"); // 成功時の処理
	} else {
		reject("処理が失敗しました。"); // 失敗時の処理
	}
});

 この例では、resolveは処理が成功したときに呼び出され、rejectは処理が失敗したときに呼び出されます。

Sample

 Promiseを使って非同期処理を行い、その結果を Webページに表示するサンプルコードを示します。この例では、フェイクAPIを呼び出してデータを取得し、その結果を表示します。

Promiseの例

ここに結果を表示

HTML

<p class="h8">Promiseの例</p>
<button id="fetchButton">データを取得</button>
<p id="result" class="result">ここに結果を表示</p>
<script>
	<!-- JavaScript code here -->
</script>

JavaScript

document.getElementById("fetchButton").addEventListener("click", function() {
	let resultDiv = document.getElementById("result");
	resultDiv.textContent = "データを取得中...";

	// フェイクAPI呼び出しをPromiseでシミュレート
	let fetchData = new Promise(function(resolve, reject) {
		setTimeout(function() { // 非同期処理としてタイマーを使います
			let success = true; // ダミーの成功条件

			if (success) {
				resolve("データの取得に成功しました!");
			} else {
				reject("データの取得に失敗しました。");
			}
		}, 2000); // 2秒後に結果を返す
	});

	fetchData.then(function(successMessage) {
		resultDiv.textContent = successMessage; // 成功メッセージを表示
	}).catch(function(errorMessage) {
		resultDiv.textContent = errorMessage; // エラーメッセージを表示
	});
});

CSS

.h8 {
	font-size: larger;
	font-weight: bold;
}
button {
	display: inline-block;
	padding: 1ex 2ex;
	margin: 1ex;
	font-size: larger;
	box-shadow: 0.2ex 0.2ex 0.3ex;
}

 このコードでは、ボタンをクリックすると、2秒後にデータ取得の結果を表示します。Promiseを使って非同期処理をシミュレートし、成功時と失敗時のメッセージを適切に表示しています。

 このように Promiseを使うことで、非同期処理を直感的に扱えるようになります。また、実際に動作するサンプルコードを使うことで、Promiseの動作を視覚的に確認することができます。