Générateur Turbine
Les itérateurs sont une implémentation d’objets Iterables tels que les cartes, les tableaux et les chaînes de caractères qui nous permet d’itérer sur eux en utilisant next(). Ils ont une grande variété de cas d’utilisation à travers les générateurs, les observables et les opérateurs de propagation.
Je recommande le lien suivant pour ceux d’entre vous qui sont nouveaux aux itérateurs, Guide to Iterators.
Pour vérifier si votre objet est conforme au protocole itérable, vérifiez en utilisant le Symbol.iterator intégré:
Les générateurs introduits dans le cadre de ES6 n’ont pas subi de changements pour les versions ultérieures de JavaScript et ils sont là pour rester plus longtemps. Je veux dire vraiment longtemps ! Il n’y a donc pas moyen de s’y soustraire. Bien que ES7 et ES8 aient quelques nouvelles mises à jour, elles n’ont pas la même ampleur de changement que ES6 par rapport à ES5, qui a fait passer JavaScript au niveau suivant, pour ainsi dire.
À la fin de ce post, je suis positif que vous aurez une solide compréhension du fonctionnement des Générateurs de fonctions. Si vous êtes un pro, aidez-moi à améliorer le contenu en ajoutant vos commentaires dans les réponses. Juste au cas où vous auriez des difficultés à suivre le code, j’ai également ajouté des explications pour la plupart du code pour vous aider à mieux comprendre.
Les fonctions en JavaScript, comme nous le savons tous, « s’exécutent jusqu’au retour/fin ». Les fonctions génératrices, quant à elles, » s’exécutent jusqu’à ce que le rendement/le retour/la fin « . Contrairement aux fonctions normales les Generator Functions une fois appelées, renvoient l’objet Generator, qui contient l’intégralité de l’Iterable Generator qui peut être itéré en utilisant la méthode next() ou for…of loop.
Chaque appel next() sur le générateur exécute chaque ligne de code jusqu’au prochain yield qu’il rencontre et suspend temporairement son exécution.
Syntaxiquement, ils sont identifiés par un *, soit fonction* X ou fonction *X, – les deux signifient la même chose.
Une fois créé, l’appel de la fonction générateur renvoie l’objet générateur. Cet objet générateur doit être affecté à une variable pour garder la trace des méthodes next() ultérieures appelées sur lui-même. Si le générateur n’est pas assigné à une variable, alors il ne donnera toujours que jusqu’à la première expression yield sur chaque next().
Les fonctions de générateur sont normalement construites en utilisant des expressions yield. Chaque yield à l’intérieur de la fonction de générateur est un point d’arrêt avant le début du cycle d’exécution suivant. Chaque cycle d’exécution est déclenché au moyen de la méthode next() sur le générateur.
À chaque appel next(), l’expression yield renvoie sa valeur sous la forme d’un objet contenant les paramètres suivants.
{ value: 10, done: false } // assuming that 10 is the value of yield
- Valeur – est tout ce qui est écrit sur le côté droit du mot clé yield, il peut s’agir d’un appel de fonction, d’un objet ou pratiquement de n’importe quoi. Pour les yields vides, cette valeur est indéfinie.
- Done – indique l’état du générateur, s’il peut être exécuté plus loin ou non. Lorsque done renvoie true, cela signifie que la fonction a terminé son exécution.
(Si vous sentez que cela vous dépasse un peu, vous aurez plus de clarté une fois que vous aurez vu l’exemple ci-dessous…)