Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年1月.
async function* 宣言は非同期ジェネレーター関数を定義し、これは AsyncGenerator オブジェクトを返します。
非同期ジェネレーター関数は、AsyncGeneratorFunction コンストラクターや async function* 式の構文を使用して定義することもできます。
メモ: 非同期ジェネレーター関数には、対応するアロー関数はありません。
関数名です。
param 省略可関数の構文上の引数名です。
statements 省略可関数の本体を構成する文です。
非同期ジェネレーター関数は、非同期関数とジェネレーター関数の機能を組み合わせたものです。関数の内部で await と yield のキーワードの両方を使うことができます。これにより、ジェネレーター関数の遅延の性質を利用しながら、await で人間工学的に非同期タスクを処理することができるようになります。
function* で宣言された通常のジェネレーター関数とは異なり、非同期ジェネレーター関数は AsyncGenerator オブジェクトを返します。非同期反復可能プロトコルに準拠しています。next() を呼び出すたびに、イテレーターの結果オブジェクトに解決する Promise を返します。
非同期ジェネレーターからプロミスが生成されると、イテレーターの結果のプロミスの最終的な状態は、生成されたプロミスの状態と一致します。例えば次のようになります。
生成されたプロミスが拒否された場合、イテレーターの結果も拒否されるため、1 がログ出力されます。非同期ジェネレーターの解決結果の value プロパティは、別のプロミスにはなりません。
async function* 宣言は、そのスコープの先頭に巻き上げされ、そのスコープ内のどこでも呼び出すことができます。
非同期ジェネレーター関数は、常に結果のプロミスを生成します。それぞれの yield 手順が同期的であってもです。
この例では、Node の fs/promises モジュールを使用して、一連のファイルを読み、リクエストされたときだけそのコンテンツにアクセスするようにしています。
| ECMAScript® 2027 Language Specification # sec-async-generator-function-definitions |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年7月10日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.