We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

AsyncFunction コンストラクターは、新しい async function オブジェクトを生成します。JavaScript では、すべての async function が実際には AsyncFunction オブジェクトです。

AsyncFunction はグローバルオブジェクトではないことに注意してください。AsyncFunction は、次のコードの結果として取得できます。

Object.getPrototypeOf(async function(){}).constructor

構文

new AsyncFunction ([arg1[, arg2[, ...argN]],] functionBody)

引数

arg1, arg2, ... argN
形式的な引数名として関数に使用される名前。それぞれが有効な JavaScript の識別子、またはカンマで区切られた文字列のリストに対応している必要がある; たとえば、"x" や "theValue"、"a,b"。
functionBody
関数定義を構成する JavaScript ステートメントを含む文字列。

説明

AsyncFunction コンストラクターで生成された async function オブジェクトは、関数が生成されたときにパースされます。これは、async function を async function expression で定義してからコード内で呼び出す方法ほど有効ではありません。 なぜなら、そのような関数はコードの残りの部分と共にパースされるからです。

関数に渡されたすべての引数は、作成される関数内の引数の識別子名として渡されます。

ノート: AsyncFunction コンストラクターで生成された async function は、生成コンテキストにクロージャーを作成しません; それらは常にグローバルスコープに生成されます。それらを実行したとき、自身のローカル変数とグローバル変数にのみアクセスでき、AsyncFunction コンストラクターが呼び出されたスコープの変数にはアクセスできません。これは、eval と async function 式のコードを使用した場合と異なります。

AsyncFunction コンストラクターを(new 演算子を使用せずに)関数として実行した場合、コンストラクターとして呼び出したときと同じ効果があります。

プロパティ

AsyncFunction.length
AsyncFunction コンストラクターの length プロパティの値は1。
AsyncFunction.prototype
すべての async function オブジェクトにプロパティを追加できる。

AsyncFunction プロトタイプオブジェクト

プロパティ

AsyncFunction.constructor
初期値は AsyncFunction
AsyncFunction.prototype[@@toStringTag]
"AsyncFunction" を返す。

AsyncFunction インスタンス

AsyncFunction インスタンスはメソッドとプロパティを AsyncFunction.prototype から継承します。すべてのコンストラクターと同様に、コンストラクターのプロトタイプオブジェクトを変更して、すべての AsyncFunction インスタンスを変更できます。

AsyncFunction コンストラクターから async function を生成する

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}
var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor
var a = new AsyncFunction("a", "b", "return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);");
a(10, 20).then(v => {
  console.log(v); // prints 30 after 4 seconds
});

仕様

仕様 ステータス コメント
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

関連項目

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

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