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 の定義
標準 初期定義

ブラウザー実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応55 あり52 ?4210.1
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応5555 あり524210.16.0

1. From version 7.0.0: this feature is behind the --harmony runtime flag.

関連項目

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

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