Generator.prototype.next()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
La méthode next() renvoie un objet possédant deux propriétés done et value. Cette méthode peut également recevoir un paramètre pour envoyer une valeur au générateur.
Syntaxe
gen.next(valeur);
Paramètres
valeur-
La valeur à envoyer au générateur. La valeur sera affectée comme résultat d'une expression
yield. Autrement dit, lorsque le générateur contient une expression de la formevariable = yield expression, c'est l'argumentvaleurqui sera affecté àvariable.
Valeur de retour
Un Object possédant deux propriétés :
-
done(un booléen)- vaut
truesi l'itérateur a atteint la fin de la série sur laquelle il itère. Dans ce cas, la propriétévaluedéfinit la valeur de retour pour l'itérateur. - vaut
falsesi l'itérateur a pu fournir la prochaine valeur de la série. C'est la valeur par défaut si la propriétédonen'est pas définie.
- vaut
-
value- n'importe quelle valeur JavaScript renvoyée par l'itérateur. Cette propriété peut être absente lorsquedonevauttrue.
Exemples
>Utiliser next()
L'exemple suivant illustre comment utiliser un générateur simple et les objets renvoyés par la méthode next :
function* gen() {
yield 1;
yield 2;
yield 3;
}
var g = gen(); // "Generator { }"
g.next(); // "Object { value: 1, done: false }"
g.next(); // "Object { value: 2, done: false }"
g.next(); // "Object { value: 3, done: false }"
g.next(); // "Object { value: undefined, done: true }"
Envoyer des valeurs à un générateur
Ici, next est appelé avec une valeur. On notera ici que le premier appel n'affiche rien car le générateur n'a encore rien généré.
function* gen() {
while (true) {
var value = yield null;
console.log(value);
}
}
var g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// 2
// "{ value: null, done: false }"
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-generator.prototype.next> |
Compatibilité des navigateurs
Chargement…