async function* 表达式
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
规范
| Specification |
|---|
| ECMAScript Language Specification # sec-async-generator-function-definitions |
浏览器兼容性
BCD tables only load in the browser