AsyncGeneratorFunction

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

AsyncGeneratorFunction 对象提供了访问 异步生成器函数 的方法。在 JavaScript 中,每个异步生成器函数实际上都是一个 AsyncGeneratorFunction 对象。

请注意,AsyncGeneratorFunction 不是一个全局对象。可以通过以下代码获取它:

js
const AsyncGeneratorFunction = async function* () {}.constructor;

AsyncGeneratorFunctionFunction 的一个子类。

试一试

const AsyncGeneratorFunction = async function* () {}.constructor;

const foo = new AsyncGeneratorFunction(`
  yield await Promise.resolve('a');
  yield await Promise.resolve('b');
  yield await Promise.resolve('c');
`);

let str = "";

async function generate() {
  for await (const val of foo()) {
    str += val;
  }
  console.log(str);
}

generate();
// Expected output: "abc"

构造函数

AsyncGeneratorFunction()

创建一个新的 AsyncGeneratorFunction 对象。

实例属性

也从其父级 Function 继承实例属性。.

这些属性定义在 AsyncGeneratorFunction.prototype 上,并被所有 AsyncGeneratorFunction 实例共享。

AsyncGeneratorFunction.prototype.constructor

创建了实例对象的构造函数。对于 AsyncGeneratorFunction 实例,初始值是 AsyncGeneratorFunction 构造函数。

AsyncGeneratorFunction.prototype.prototype

所有异步生成器函数共享同一个 prototype 属性,即 AsyncGenerator.prototype。通过 async function* 语法或 AsyncGeneratorFunction() 构造函数创建的每个异步生成器函数也有自己的 prototype 属性,其原型是 AsyncGeneratorFunction.prototype.prototype。当异步生成器函数被调用时,其 prototype 属性将成为返回的异步生成器对象的原型。

AsyncGeneratorFunction.prototype[Symbol.toStringTag]

[Symbol.toStringTag] 属性的初始值是字符串 "AsyncGeneratorFunction"。此属性用于 Object.prototype.toString()

这些属性是每个 AsyncGeneratorFunction 实例自身的属性。

prototype

当函数用作使用 new 运算符的构造函数时使用。它将成为新对象的原型。

实例方法

从其父级 Function 继承实例方法。.

规范

规范
ECMAScript® 2026 语言规范
# sec-asyncgeneratorfunction-objects

浏览器兼容性

另见