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*
声明定义一个异步生成器函数。
尝试一下
语法
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