【Node.js24.x】Promise::Promise()関数の使い方
Promise関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Promise関数は、非同期処理の最終的な成功または失敗とその結果を表すPromiseオブジェクトを生成する関数です。コンピューターのプログラムには、時間がかかる処理がいくつかあります。例えば、インターネット経由でのデータの取得や、ディスク上のファイルの読み書きなどです。これらの処理は、すぐに結果が返ってこないため、プログラムの流れを一時的に中断せずにバックグラウンドで実行されることが多く、これを非同期処理と呼びます。
Promise関数は、このような非同期処理が「保留中(pending)」、「成功(fulfilled)」、「失敗(rejected)」という3つの状態のいずれかにあることを明確に示し、その結果を管理するための標準的な方法を提供します。新しいPromiseオブジェクトを作成するには、Promise関数に実行したい非同期処理を記述した関数を引数として渡します。この引数関数には、非同期処理が成功したときに呼び出すresolve関数と、失敗したときに呼び出すreject関数の二つが渡されます。
非同期処理が完了し、成功した場合はresolve関数を呼び出してその結果を通知し、失敗した場合はreject関数を呼び出してエラー情報を通知します。このようにして生成されたPromiseオブジェクトに対しては、.then()メソッドを使って成功時の処理を記述したり、.catch()メソッドを使って失敗時のエラー処理を記述したりすることができます。これにより、複数の非同期処理を順序立てて実行したり、エラーを適切に扱ったりするコードを、より分かりやすく、読みやすい形で記述することが可能になります。
構文(syntax)
new Promise((resolve, reject) => {
// ここに非同期処理を記述します。
// 例えば、setTimeoutを使って一定時間後に処理を実行します。
setTimeout(() => {
const condition = true; // 実際のアプリケーションでは、処理結果に基づいて判断します。
if (condition) {
resolve("処理が成功しました。"); // 非同期処理が成功した場合、この関数を呼び出します。
} else {
reject(new Error("処理が失敗しました。")); // 非同期処理が失敗した場合、この関数を呼び出します。
}
}, 1000);
});
引数(parameters)
executor
- executor: function: Promiseの初期化処理を行う関数。resolveとrejectという2つの関数を引数に取ります。
戻り値(return)
Promise
Promiseコンストラクタは、新しいPromiseオブジェクトを生成して返します。このPromiseオブジェクトは、非同期処理の最終的な完了または失敗の状態を表します。