| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Generator/return | [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.
La mthode return() des instances de Generator agit comme si une instruction return tait insre dans le corps du gnrateur la position actuelle de suspension, ce qui termine le gnrateur et permet au gnrateur d'effectuer toutes les tches de nettoyage lorsqu'elle est combine avec un bloc try...finally.
generatorInstance.return()
generatorInstance.return(value)
value FacultatifLa valeur retourner.
Un Object possdant deux proprits :
doneUne valeur boolenne :
true si le flux de contrle de la fonction gnratrice a atteint la fin.false si le flux de contrle de la fonction gnratrice n'a pas atteint la fin et peut produire d'autres valeurs. Cela ne peut arriver que si le return est captur dans un bloc try...finally et qu'il y a d'autres expressions yield dans le bloc finally.valueLa valeur donne comme argument, ou, si l'expression yield est enveloppe dans un bloc try...finally, la valeur produite/retourne par le bloc finally.
TypeErrorLeve si le gnrateur est dj en cours d'excution.
La mthode return(), lorsqu'elle est appele, peut tre considre comme si une instruction return valeur; tait insre dans le corps du gnrateur la position actuelle de suspension, o valeur est la valeur passe la mthode return(). Ainsi, dans un flux typique, appeler return(valeur) retournera { done: true, value: valeur }. Cependant, si l'expression yield est enveloppe dans un bloc try...finally, le flux de contrle ne quitte pas le corps de la fonction, mais passe au bloc finally la place. Dans ce cas, la valeur retourne peut tre diffrente, et done peut mme tre false, s'il y a d'autres expressions yield dans le bloc finally.
return()L'exemple suivant illustre une utilisation simple d'un gnrateur et de la mthode return().
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen();
g.next(); // { value: 1, done: false }
g.return("toto"); // { value: "toto", done: true }
g.next(); // { value: undefined, done: true }
Si return(valeur) est appel sur un gnrateur qui est dj dans l'tat termin , le gnrateur restera dans l'tat termin .
Si aucun argument n'est fourni, la proprit value de l'objet retourn sera undefined. Si un argument est fourni, il deviendra la valeur de la proprit value de l'objet retourn, sauf si l'expression yield est enveloppe dans un bloc try...finally.
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen();
g.next(); // { value: 1, done: false }
g.next(); // { value: 2, done: false }
g.next(); // { value: 3, done: false }
g.next(); // { value: undefined, done: true }
g.return(); // { value: undefined, done: true }
g.return(1); // { value: 1, done: true }
return() avec try...finallyLe fait que la mthode return ait t appele ne peut tre connu du gnrateur lui-mme que si l'expression yield est enveloppe dans un bloc try...finally.
Lorsque la mthode return est appele sur un gnrateur qui est suspendu dans un bloc try, l'excution dans le gnrateur passe au bloc finally puisque le bloc finally des instructions try...finally s'excute toujours.
function* gen() {
yield 1;
try {
yield 2;
yield 3;
} finally {
yield "nettoyage";
}
}
const g1 = gen();
g1.next(); // { value: 1, done: false }
// L'excution est suspendue avant le bloc try...finally.
g1.return("retour anticip"); // { value: 'retour anticip', done: true }
const g2 = gen();
g2.next(); // { value: 1, done: false }
g2.next(); // { value: 2, done: false }
// L'excution est suspendue dans le bloc try...finally.
g2.return("retour anticip"); // { value: 'nettoyage', done: false }
// La valeur de compltion est prserve
g2.next(); // { value: 'retour anticip', done: true }
// Generator is in the completed state
g2.return("retour tardif"); // { value: 'retour tardif', done: true }
La valeur de retour du bloc final peut galement devenir la valeur (value) du rsultat retourn par l'appel return.
function* gen() {
try {
yield 1;
} finally {
return "nettoyage";
}
}
const generator = gen();
generator.next(); // { value: 1, done: false }
generator.return("retour anticip"); // { value: 'nettoyage', done: true }
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-generator.prototype.return |
function*Cette page a t modifie le 25 fvr. 2026 par les contributeurices du MDN.
GeneratorIteratorObject/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()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 |