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

構文

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

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

説明

await 式は async function の実行を一時停止し、promise の解決を待ちます。その後、async function の実行を再開し、解決された値を返します。値が promise ではなかった場合、解決された promise に変換されます。

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

promise が await 式で停止された場合、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();

仕様

仕様 ステータス コメント
ECMAScript Async Functions
async function の定義
ドラフト 提案

ブラウザー実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari (WebKit)
基本サポート 55 52.0 (52.0) ? ? 42 ?
機能 Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
基本サポート 未サポート 未サポート 52.0 (52.0) ? 42 ? 55

関連項目

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

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