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

async function キーワードは、式内で async function を定義するために使用できます。

構文

async function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

引数

name
関数名。関数が匿名の場合、省略可能。名前は関数ボディー内のみのローカル。
paramN
関数に渡される引数名。
statements
関数ボディーを構成するステートメント。

説明

async function 式は async function statement と非常に似ており、構文もほとんど同じです。async function 式と async function ステートメントの主な違いは、async function 式は匿名関数を生成するために関数名を省略できる点です。async function 式は、定義後直ちに実行される IIFE(即時実行関数式)として使用することもできます。詳細は function の章を見てください。

シンプルな例

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

(async function(x) { // async function expression used as an IIFE
  var a = resolveAfter2Seconds(20);
  var b = resolveAfter2Seconds(30);
  return x + await a + await b;
})(10).then(v => {
  console.log(v);  // prints 60 after 2 seconds.
});

var add = async function(x) { // async function expression assigned to a variable
  var a = await resolveAfter2Seconds(20);
  var b = await resolveAfter2Seconds(30);
  return x + a + b;
};

add(10).then(v => {
  console.log(v);  // prints 60 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

 

関連項目

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

このページの貢献者: YuichiNukiyama
最終更新者: YuichiNukiyama,