Generator.prototype.next()

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

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.
  • value - n'importe quelle valeur JavaScript renvoyée par l'itérateur. Cette propriété peut être absente lorsque done vaut true.

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); 
// "{ value: null, done: false }"
// 2

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Generator.prototype.next' dans cette spécification.
Standard Définition initiale.
ECMAScript 2017 Draft (ECMA-262)
La définition de 'Generator.prototype.next' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) 13 26 (26) Pas de support (Oui) 10
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple 5.1 (Oui) 26.0 (26) ? ? 10

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,