[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/yield [Back]  [Original]

yield - 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

yield

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.

Le mot-cl yield est utilis pour suspendre et reprendre une fonction gnratrice (function* ou une fonction gnratrice historique).

Dans cet article

Exemple interactif

function* foo(index) {
  while (index < 2) {
    yield index;
    index++;
  }
}

const iterator = foo(0);

console.log(iterator.next().value);
// Expected output: 0

console.log(iterator.next().value);
// Expected output: 1

Syntaxe

js
[rv] = yield[expression];
expression

Dfinit la valeur retourner depuis la fonction gnratrice via le protocole itrateur. Si omise, undefined sera retourne la place.

rv

Retourne la valeur optionnelle passe la mthode next() pour reprendre son excution.

Description

Le mot-cl yield suspend une fonction gnratrice et la valeur de l'expression suivant le mot-cl yield est retourne l'appelant du gnrateur. Il peut tre vu comme une version gnrateur du mot-cl return.

Le mot-cl yield ne peut tre appel qu' partir de la fonction gnratrice qui le contient. Il ne peut pas tre utilis depuis des fonctions imbriques ou avec des callbacks.

Le mot-cl yield retourne en fait un objet IteratorResult ayant deux proprits, value et done. La proprit value est le rsultat de l'valuation de l'expression yield, et done est false, indiquant que la fonction gnratrice n'est pas compltement termine.

Une fois suspendue sur une expression yield, l'excution du code du gnrateur reste suspendue jusqu' ce que la mthode next() du gnrateur soit appele. Chaque fois que la mthode next() du gnrateur est appele, le gnrateur reprend l'excution et s'excute jusqu' ce qu'elle atteigne l'une des situations suivantes :

  • un yield, ce qui provoque une nouvelle pause du gnrateur et retourne la nouvelle valeur du gnrateur ; la prochaine fois que next() sera appel, l'excution reprendra l'instruction immdiatement aprs le yield ;
  • throw est utilis pour dclencher une exception depuis le gnrateur ; cela arrte entirement l'excution du gnrateur et l'excution reprend dans l'appelant, comme c'est normalement le cas lorsqu'une exception est dclenche ;
  • la fin de la fonction gnratrice est atteinte ; dans ce cas, l'excution du gnrateur se termine et un IteratorResult est retourn l'appelant, dans lequel la valeur est undefined et done est true ;
  • une instruction return est atteinte ; dans ce cas, l'excution du gnrateur se termine et un IteratorResult est retourn l'appelant dans lequel la value est la valeur spcifie par l'instruction return et done vaut true.

Si une valeur optionnelle est passe la mthode next() du gnrateur, cette valeur devient la valeur retourne par l'opration yield en cours du gnrateur.

Entre le chemin de code du gnrateur, ses oprateurs yield, et la possibilit de spcifier une nouvelle valeur de dpart en la passant Generator.prototype.next(), les gnrateurs offrent normment de puissance et de contrle.

Exemples

Le code suivant est la dclaration d'un exemple de fonction gnratrice :

js
function* compteVentesPommes() {
  var listeVentes = [3, 7, 5];
  for (var i = 0; i < listeVentes.length; i++) {
    yield listeVentes[i];
  }
}

Une fois qu'une fonction gnratrice est dfinie, elle peut tre utilise en construisant un itrateur comme indiqu.

js
var magasinPommes = compteVentesPommes(); // Gnrateur { }
console.log(magasinPommes.next()); // { value: 3, done: false }
console.log(magasinPommes.next()); // { value: 7, done: false }
console.log(magasinPommes.next()); // { value: 5, done: false }
console.log(magasinPommes.next()); // { value: undefined, done: true }

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# prod-YieldExpression

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page