Promise.resolve(value) メソッドは引数で与えられた値で解決される Promise オブジェクトを返します。もし引数の値が Promise なら、引数の Promise がそのまま返されます。もし引数の値が thenable なら (すなわち "then" メソッドを持っている場合)、返される Promise はその thenable を「たどって処理し」、その最終的な状態を採用するものとなります。それ以外では、返される Promise は引数の値で充足されるものとなります。

構文

Promise.resolve(value);
Promise.resolve(promise);
Promise.resolve(thenable);

引数

value
Promise によって完了される引数。Promise または完了する then

戻り値

所与の値で解決された Promise 、または value が promise オブジェクトの場合、value として渡された promise。

説明

静的な Promise.resolve 関数は完了する Promise を返します。

静的な Promise.resolve メソッドを使う

Promise.resolve("Success").then(function(value) {
  console.log(value); // "Success"
}, function(value) {
  // not called
});

配列を完了する

var p = Promise.resolve([1,2,3]);
p.then(function(v) {
  console.log(v[0]); // 1
});

別の Promise を完了する

var original = Promise.resolve(33);
var cast = Promise.resolve(original);
cast.then(function(value) {
  console.log('value: ' + value);
});
console.log('original === cast ? ' + (original === cast));

// logs, in order:
// original === cast ? true
// value: 33

ログの反転された順番は then ハンドラーが非同期に呼び出されることによります。then の動作はこちらを見てください。

thenables を完了しエラーをスローする

// Resolving a thenable object
var p1 = Promise.resolve({ 
  then: function(onFulfill, onReject) { onFulfill("fulfilled!"); }
});
console.log(p1 instanceof Promise) // true, object casted to a Promise

p1.then(function(v) {
    console.log(v); // "fulfilled!"
  }, function(e) {
    // not called
});

// Thenable throws before callback
// Promise rejects
var thenable = { then: function(resolve) {
  throw new TypeError("Throwing");
  resolve("Resolving");
}};

var p2 = Promise.resolve(thenable);
p2.then(function(v) {
  // not called
}, function(e) {
  console.log(e); // TypeError: Throwing
});

// Thenable throws after callback
// Promise resolves
var thenable = { then: function(resolve) {
  resolve("Resolving");
  throw new TypeError("Throwing");
}};

var p3 = Promise.resolve(thenable);
p3.then(function(v) {
  console.log(v); // "Resolving"
}, function(e) {
  // not called
});

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Promise.resolve の定義
標準 ECMA 標準での初期定義。
ECMAScript Latest Draft (ECMA-262)
Promise.resolve の定義
ドラフト    

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応32 あり29 なし198
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応4.4.432 あり29 あり8 あり

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mandel59, Uemmra3, shide55
最終更新者: mandel59,