A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/async_function* below:

async function* 表达式 - JavaScript

async function* 表达式

Baseline Widely available

async function* 关键字可用于在表达式中定义一个异步生成器函数。

你也可以使用 async function* 声明定义一个异步生成器函数。

尝试一下
async function* foo() {
  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 = str + val;
  }
  console.log(str);
}

generate();
// Expected output: "abc"
语法
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。这个函数产生它参数的平方。

const x = async function* (y) {
  yield Promise.resolve(y * y);
};
x(6)
  .next()
  .then((res) => console.log(res.value)); // 36
规范 浏览器兼容性 参见

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4