async function* 式
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
async function*
キーワードは、式の内部で非同期ジェネレーター関数を定義するために使用できます。
また、 async function*
宣言 を使って非同期ジェネレーター関数を定義することもできます。
試してみましょう
構文
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*
宣言 ととても似ており、ほとんど同じ構文を持っています。 async function*
式と async function*
宣言の主な違いは関数名で、 async function*
式では無名関数を作成するために省略することができます。 async function*
式は定義されるとすぐに実行される IIFE (Immediately Invoked Function Expression) として使うことができ、アドホックな非同期反復可能オブジェクトを作成することができます。詳しくは関数の章も参照してください。
例
async function* の使用
次の例では、無名の非同期ジェネレーター関数を定義し、それを x
に代入しています。この関数は引数の2乗を返します。
const x = async function* (y) {
yield Promise.resolve(y * y);
};
x(6)
.next()
.then((res) => console.log(res.value)); // 36
仕様書
Specification |
---|
ECMAScript Language Specification # sec-async-generator-function-definitions |
ブラウザーの互換性
BCD tables only load in the browser