Spec-Zone.ru › JavaScript

выражение async function*

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна во всех браузерах с января 2020 года.

Ключевые слова async function* можно использовать для определения асинхронной генераторной функции внутри выражения.

Вы также можете определить асинхронные генераторные функции, используя async function* объявление.

Попробуйте

async function joinAll(generator) {
  let str = "";
  for await (const val of generator()) {
    str += val;
  }
  return str;
}
joinAll(async function* () {
  yield await Promise.resolve("a");
  yield await Promise.resolve("b");
  yield await Promise.resolve("c");
}).then((str) => console.log(str));
// 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 (Immediately Invoked Function Expression), которая выполняется сразу после определения, позволяя создавать специальные асинхронные итерируемые объекты. Также см. главу о функциях для получения дополнительной информации.

Примеры

Использование выражения async function*

Следующий пример определяет безымянную асинхронную генераторную функцию и присваивает ее x. Функция возвращает квадрат своего аргумента:

const x = async function* (y) {
  yield Promise.resolve(y * y);
};
x(6)
  .next()
  .then((res) => console.log(res.value)); // 36

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-async-generator-function-definitions

Совместимость с браузерами

Настольные компьютеры Мобильные Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
async_generator_function
63
79
57
50
12
63
57
46
12
8.0
63
12
1.0.0
1.0
10.0.0

См. также

  • Руководство по функциям
  • Функции
  • async function*
  • AsyncGeneratorFunction
  • Протоколы итерации
  • yield
  • yield*

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/async_function*

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API