Promise() コンストラクター

Promise コンストラクターは、主に、Promise をまだサポートしていない関数をラップするために使用します。

構文

new Promise(executor)

引数

executor
2 つの引数 resolvereject を取る関数。executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。 resolve 関数と reject 関数は呼び出されると Promise に対してそれぞれ resolve (解決) もしくは reject (拒否) を行います。executor は通常、非同期の作業を開始して、完了した際に resolve 関数 (成功した場合) もしくは reject 関数 (エラーが発生した場合) のいずれか一方を呼び出します。 executor 関数でエラーが投げられた場合、 Promise は reject されます。 executor の返値は無視されます。

Promise オブジェクトは new キーワードとコンストラクターで作成されます。コンストラクターは executor 関数と呼ばれる引数を取ります。 executor 関数は 2 つの関数を引数として取ります。1 つめの関数 (resolve) は非同期タスクが成功して完了した場合に呼び出され、タスクの結果を値として返します。2 つめの関数 (reject) はタスクが失敗した場合に呼び出され、失敗した理由 (典型的には error オブジェクト) を返します。

const myFirstPromise = new Promise((resolve, reject) => {
  // do something asynchronous which eventually calls either:
  //
  //   resolve(someValue)        // fulfilled
  // or
  //   reject("failure reason")  // rejected
});

関数に Promise 機能を提供するには、次のように単に Promise を返すようにします。

function myAsyncFunction(url) {
  return new Promise((resolve, reject) => {
    const xhr = new XMLHttpRequest() 
    xhr.open("GET", url) 
    xhr.onload = () => resolve(xhr.responseText) 
    xhr.onerror = () => reject(xhr.statusText) 
    xhr.send() 
  });
}

仕様書

仕様書
ECMAScript (ECMA-262)
Promise コンストラクター の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
Promise() constructorChrome 完全対応 32Edge 完全対応 12Firefox 完全対応 29
補足
完全対応 29
補足
補足 Constructor requires a new operator since version 37.
IE 未対応 なしOpera 完全対応 19Safari 完全対応 8
補足
完全対応 8
補足
補足 Constructor requires a new operator since version 10.
WebView Android 完全対応 4.4.3Chrome Android 完全対応 32Firefox Android 完全対応 29
補足
完全対応 29
補足
補足 Constructor requires a new operator since version 37.
Opera Android 完全対応 19Safari iOS 完全対応 8
補足
完全対応 8
補足
補足 Constructor requires a new operator since version 10.
Samsung Internet Android 完全対応 2.0nodejs 完全対応 0.12
補足
完全対応 0.12
補足
補足 Constructor requires a new operator since version 4.

凡例

完全対応  
完全対応
未対応  
未対応
実装ノートを参照してください。
実装ノートを参照してください。

関連情報