await 演算子は、async function によって Promise が返されるのを待機するために使用します。

構文

[rv] = await expression;
expression
解決を待つ Promise もしくは何らかの値。
rv

解決された promise の値。expressionが Promise ではない場合はその値自体を返す。

説明

await 式は async function の実行を一時停止し、Promise の解決または拒否を待ちます。解決した後に async function の実行を再開します。再開するときに await 式は解決された Promise にラップされた値を返します。

Promise が拒絶された場合、await 式は理由となった値をスローします。

await 式に続く値が Promise ではなかった場合、解決された Promise に変換されます。

Promiseawait 式で停止された場合、Promise が解決されて、解決された値を返すのを待ちます。

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

値が promise ではなかった場合、値を解決された promise に変換して、それを待ちます。

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

promise が拒否された場合、理由となった値をスローします。

async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch (e) {
    console.log(e); // 30
  }
}
f3();

拒否されたPromise は try 文を使用せずにエラーハンドリングを行えます。

var response = await promisedFunction().catch((err) => { console.log(err); });
// promiseがrejectされた場合、response には undefined が代入されます

仕様

仕様 ステータス コメント
ECMAScript Latest Draft (ECMA-262)
async functions の定義
ドラフト  
ECMAScript 2018 (ECMA-262)
async functions の定義
標準  
ECMAScript 2017 (ECMA-262)
async functions の定義
標準 初期定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 55Edge 完全対応 ありFirefox 完全対応 52IE ? Opera 完全対応 42Safari 完全対応 10.1WebView Android 完全対応 55Chrome Android 完全対応 55Edge Mobile 完全対応 ありFirefox Android 完全対応 52Opera Android 完全対応 42Safari iOS 完全対応 10.1Samsung Internet Android 完全対応 6.0nodejs 完全対応 7.6.0
完全対応 7.6.0
完全対応 7.0.0
無効
無効 From version 7.0.0: this feature is behind the --harmony runtime flag.

凡例

完全対応  
完全対応
実装状況不明  
実装状況不明
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連項目

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

このページの貢献者: segayuu, TakashiSasaki, swallow-life, YuichiNukiyama
最終更新者: segayuu,