Generator.prototype.next()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 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'argumentvaleur
qui sera affecté àvariable
.
Valeur de retour
Un Object
possédant deux propriétés :
-
done
(un booléen)- vaut
true
si l'itérateur a atteint la fin de la série sur laquelle il itère. Dans ce cas, la propriétévalue
définit la valeur de retour pour l'itérateur. - vaut
false
si l'itérateur a pu fournir la prochaine valeur de la série. C'est la valeur par défaut si la propriétédone
n'est pas définie.
- vaut
-
value
- n'importe quelle valeur JavaScript renvoyée par l'itérateur. Cette propriété peut être absente lorsquedone
vauttrue
.
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 Language Specification # sec-generator.prototype.next |
Compatibilité des navigateurs
BCD tables only load in the browser