Expression async function*
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis janvier 2020.
Les mots-clés async function* peuvent être utilisés pour définir une fonction génératrice asynchrone au sein d'une expression.
Vous pouvez également définir des fonctions génératrices asynchrones en utilisant une déclaration async function*.
Exemple interactif
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));
// Résultat attendu : "abc"
Syntaxe
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 :
Une instruction d'expression ne peut pas commencer par les mots-clés async function afin d'éviter toute ambiguïté avec une déclaration async function. Les mots-clés async function ne commencent une expression que lorsqu'ils apparaissent dans un contexte qui ne peut pas accepter d'instructions.
Paramètres
nameFacultatif-
Le nom de la fonction. Peut être omis, auquel cas la fonction est anonyme. Le nom n'est local qu'au corps de la fonction.
paramNFacultatif-
Le nom d'un paramètre formel pour la fonction. Pour la syntaxe des paramètres, voir la référence sur les fonctions.
statementsFacultatif-
Les instructions qui composent le corps de la fonction.
Description
Une expression async function* est très proche, et partage quasiment la même syntaxe avec une déclaration async function*. La différence principale entre une expression async function* et une déclaration async function* est le nom de la fonction, qui peut être omis dans les expressions async function* pour créer des fonctions anonymes. Une expression async function* peut être utilisée comme une IIFE (Immediately Invoked Function Expression) qui s'exécute dès qu'elle est définie, ce qui permet de créer un objet itérable asynchrone ad hoc. Voir également le chapitre sur les fonctions pour plus d'informations.
Exemples
>Utiliser l'expression async function*
L'exemple qui suit définit une fonction génératrice asynchrone anonyme et l'affecte à x. Cette fonction génère le carré de son argument :
const x = async function* (y) {
yield Promise.resolve(y * y);
};
x(6)
.next()
.then((res) => console.log(res.value)); // 36
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # sec-async-generator-function-definitions> |
Compatibilité des navigateurs
Voir aussi
- Le guide des fonctions
- Les fonctions
- L'instruction
async function* - L'objet natif
AsyncGeneratorFunction - Les protocoles d'itération
- L'opérateur
yield - L'opérateur
yield*