[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Generator/next [Back]  [Original]

Generator : mthode next() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Generator : mthode next()

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 septembre 2016.

La mthode next() des instances de Generator retourne un objet avec deux proprits done et value. Vous pouvez galement fournir un paramtre la mthode next pour envoyer une valeur au gnrateur.

Dans cet article

Syntaxe

js
next()
next(value)

Paramtres

value Facultatif

La valeur envoyer au gnrateur.

La valeur sera affecte comme rsultat d'une expression yield. Par exemple, dans variable = yield expression, la valeur passe la fonction .next() sera affecte variable.

Valeur de retour

Un Object possdant deux proprits :

done

Une valeur boolenne :

  • true si le gnrateur a dpass la fin de son flux de contrle. Dans ce cas, value dfinit la valeur de retour du gnrateur (qui peut tre indfinie).
  • false si le gnrateur peut produire d'autres valeurs.
value

Toute valeur JavaScript produite ou retourne par le gnrateur.

Exceptions

TypeError

Leve si le gnrateur est dj en cours d'excution.

Exemples

Utiliser la mthode next()

L'exemple suivant illustre comment utiliser un gnrateur simple et les objets renvoys par la mthode next :

js
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 }"

Utiliser la mthode next() avec une liste

Dans cet exemple, obtenirPage prend une liste et la  pagine  en segments de taille taillePage. Chaque appel next produira un de ces segments.

js
function* obtenirPage(list, taillePage = 1) {
  for (let index = 0; index < list.length; index += taillePage) {
    yield list.slice(index, index + taillePage);
  }
}

const list = [1, 2, 3, 4, 5, 6, 7, 8];
const page = obtenirPage(list, 3); // Generator { }

page.next(); // { value: [1, 2, 3], done: false }
page.next(); // { value: [4, 5, 6], done: false }
page.next(); // { value: [7, 8], done: false }
page.next(); // { value: undefined, done: true }

Envoyer des valeurs un gnrateur

Dans cet exemple, next est appel avec une valeur.

Note : Le premier appel n'affiche rien, car le gnrateur ne produisait rien initialement.

js
function* gen() {
  while (true) {
    const value = yield;
    console.log(value);
  }
}

const g = gen();
g.next(1); // Retourne { value: undefined, done: false }
// Aucun journal  cette tape : la premire valeur envoye via `next` est perdue
g.next(2); // Retourne { value: undefined, done: false }
// Journalise 2

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-generator.prototype.next

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page