异步生成器表达式
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*
声明 非常相似,并且具有几乎相同的语法。async function*
表达式和 async function*
声明之间的主要区别在于函数名称,在 async function*
表达式中可以省略函数名称以创建匿名函数。async function*
表达式可用作 IIFE(立即调用函数表达式),该表达式在定义后立即运行,允许您创建临时的 异步可迭代对象。另请参见有关 函数 的章节以了解更多信息。
示例
使用 async function* 表达式
以下示例定义了一个未命名的异步生成器函数,并将其分配给 x
。该函数产生其参数的平方
js
const x = async function* (y) {
yield Promise.resolve(y * y);
};
x(6)
.next()
.then((res) => console.log(res.value)); // 36
规范
规范 |
---|
ECMAScript 语言规范 # sec-async-generator-function-definitions |
浏览器兼容性
BCD 表仅在浏览器中加载