Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

async function 式

BaselineWidely available

async function キーワードは、式の中で非同期関数を定義するために使用できます。

非同期関数は、async function 宣言またはアロー構文を使用して定義することもできます。

構文

js
async function (param0) {  statements}async function (param0, param1) {  statements}async function (param0, param1, /* …, */ paramN) {  statements}async function name(param0) {  statements}async function name(param0, param1) {  statements}async function name(param0, param1, /* …, */ paramN) {  statements}

メモ:式文async function キーワードを使用することができません。async function 宣言との混同を防ぐためです。async function キーワードは文を受け付けることができないコンテキストで現れた場合のみ、式の始まりになります。

引数

name省略可

関数名です。関数が無名の場合は省略可能です。名前は関数の本体内のみのローカルです。

paramN省略可

関数に渡される引数名です。引数の構文については、関数リファレンスを参照してください。

statements省略可

関数本体を構成する文です。

解説

async function 式はasync function 宣言とよく似ており、構文もほとんど同じです。asyncfunction 式とasync function 宣言の主な違いは、async function 式が関数名を省略して無名関数を生成することができる点です。async function 式は、定義後直ちに実行されるIIFE(即時実行関数式)として使用することもでき、最上位の await を模倣することができます。詳細は関数の章を見てください。

非同期関数式の使用

js
function resolveAfter2Seconds(x) {  return new Promise((resolve) => {    setTimeout(() => {      resolve(x);    }, 2000);  });}// 変数に代入された非同期関数式const add = async function (x) {  const a = await resolveAfter2Seconds(20);  const b = await resolveAfter2Seconds(30);  return x + a + b;};add(10).then((v) => {  console.log(v); // 4 秒後に 60 を表示});// IIFE として使用される非同期関数式(async function (x) {  const p1 = resolveAfter2Seconds(20);  const p2 = resolveAfter2Seconds(30);  return x + (await p1) + (await p2);})(10).then((v) => {  console.log(v); // 2 秒後に 60 を表示});

非同期 IIFE

asyncIIFE を使用すると、await およびfor...await を、最上位の await が利用できないコンテキストで使用することができます。ここでは、アロー関数を使用して IIFE を定義していますが、async function 式も使用できます。

js
const getFileStream = async (url) => {  // implementation};(async () => {  const stream = await getFileStream("https://domain.name/path/file.ext");  for await (const chunk of stream) {    console.log({ chunk });  }})();

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-async-function-definitions

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp