async function* expression
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.
The async function*
keywords can be used to define an async generator function inside an expression.
You can also define async generator functions using the async function*
declaration.
Try it
Syntax
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
}
Note:
An expression statement cannot begin with the keywords async function
to avoid ambiguity with an async function*
declaration. The async function
keywords only begin an expression when they appear in a context that cannot accept statements.
Parameters
name
Optional-
The function name. Can be omitted, in which case the function is anonymous. The name is only local to the function body.
paramN
Optional-
The name of a formal parameter for the function. For the parameters' syntax, see the Functions reference.
statements
Optional-
The statements which comprise the body of the function.
Description
An async function*
expression is very similar to, and has almost the same syntax as, an async function*
declaration. The main difference between an async function*
expression and an async function*
declaration is the function name, which can be omitted in async function*
expressions to create anonymous functions. An async function*
expression can be used as an IIFE (Immediately Invoked Function Expression) which runs as soon as it is defined, allowing you to create an ad-hoc async iterable object. See also the chapter about functions for more information.
Examples
Using async function* expression
The following example defines an unnamed asynchronous generator function and assigns it to x
. The function yields the square of its argument:
const x = async function* (y) {
yield Promise.resolve(y * y);
};
x(6)
.next()
.then((res) => console.log(res.value)); // 36
Specifications
Specification |
---|
ECMAScript Language Specification # sec-async-generator-function-definitions |
Browser compatibility
BCD tables only load in the browser