Jetons d'abord un coup d'œil au code :
function wrapper(generatorFunction) { return function (...args) { let generatorObject = generatorFunction(...args); generatorObject.next(); return generatorObject; }; } const wrapped = wrapper(function* () { console.log(`First input: ${yield}`); return 'DONE'; }); wrapped().next('hello!') // First input: hello!
Comment comprendre ce résultat de sortie ? Après avoir longuement réfléchi, je n'arrivais pas à comprendre les résultats de son opération.
Il y a aussi le code suivant :
function* dataConsumer() { console.log('Started'); console.log(`1. ${yield}`); console.log(`2. ${yield}`); return 'result'; } let genObj = dataConsumer(); genObj.next(); // Started genObj.next('a') // 1. a genObj.next('b') // 2. b
Je ne comprends toujours pas, aidez-moi à analyser les deux morceaux de code ci-dessus et aidez-moi à apprendre la fonction Générateur. Merci.
yield
Les mots clés ont deux fonctions :Suspend l'exécution de la fonction génératrice et renvoie la valeur de l'expression suivante
Reprenez l'exécution de la fonction génératrice et récupérez les paramètres facultatifs transmis par la
next
méthodeLes deux exemples que vous avez donnés utilisent tous deux
.yield
接收了next
pour recevoir les paramètres transmis par la méthode