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 の定義
ドラフト    

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 32Edge 完全対応 ありFirefox 完全対応 29IE 未対応 なしOpera 完全対応 19Safari 完全対応 8WebView Android 完全対応 4.4.3Chrome Android 完全対応 32Edge Mobile 完全対応 ありFirefox Android 完全対応 29Opera Android 完全対応 ありSafari iOS 完全対応 8Samsung Internet Android 完全対応 ありnodejs 完全対応 0.12

凡例

完全対応  
完全対応
未対応  
未対応

関連情報

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

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