| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/yield | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
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).
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
[rv] = yield[expression];
expressionDfinit la valeur retourner depuis la fonction gnratrice via le protocole itrateur. Si omise, undefined sera retourne la place.
rvRetourne la valeur optionnelle passe la mthode next() pour reprendre son excution.
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 :
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 ;IteratorResult est retourn l'appelant, dans lequel la valeur est undefined et done est true ;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.
Le code suivant est la dclaration d'un exemple de fonction gnratrice :
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.
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 }
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # prod-YieldExpression |
function*function*yield*Cette page a t modifie le 22 mai 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |