promiseオブジェクトのコンストラクタ構文
let promise = new Promise(function (resolse, reject) {
}
new Promise
に渡される関数はexectorと呼ばれ、promiseが生成されると自動で呼ばれるpromise
オブジェクトは内部プロパティを持っている
state
- 最初はpending(保留中)であり、その後fulfilled(完了)もしくはrejected(拒否)に変更されるresult
- 任意の値。初期値はundefined
executor がジョブを終了した時、次の中のいずれか1つを呼ぶ
resolve(value)
– ジョブが正常に終了したことを示す
state
を "fulfilled"
に設定するresult
を value
に設定するreject(error)
– エラーが発生したことを示す
state
を "rejected"
に設定するresult
を error
に設定するpromiseのジョブが正常に完了する例
let promise = new Promise(function(resolve, reject) {
// 1秒後にジョブが'done!'という結果とともに完了したことを返す
setTimeout(() => resolve('done!'), 1000);
});
promiseのジョブがエラーで終わる時の例
let promise = new Promise(function(resolve, reject) {
// 1秒後に、ジョブがエラーで終わったことを返す
setTimeout(() => reject(new Error('Whoops!'), 1000);
});
promiseのexecutorの結果をもとに処理を行う際に.then
, .catch
, .finally
を使う
基本構文
引数に2つの関数を設定することができる
promise.then(
function(result) { /* 成功した結果を扱う */ },
function(error) { /* エラーを扱う */ }
);