Maison > interface Web > js tutoriel > le corps du texte

Une brève discussion sur l'utilisation du générateur et de l'itérateur dans les connaissances JavaScript_Basic

WBOY
Libérer: 2016-05-16 15:48:15
original
1053 Les gens l'ont consulté

En ce qui concerne Generator, tout le monde évoquera des sujets tels que l'asynchrone. Cela était évidemment dû à quelque chose de bizarre. Iterator doit être étroitement lié à Generator. Utiliser Generator pour gérer le traitement asynchrone peut être une chose à laquelle seuls certains programmeurs C# pourraient penser. Bien sûr, cet usage comporte un ensemble complet de choses, mais personnellement, je ne l'aime pas.
Si vous devez connecter Generator en mode asynchrone, le seul point est le moment de l'appel suivant. Parce que next peut être appelé de manière asynchrone, Generator peut être abusé de manière asynchrone.
Mais je pense que même si la méthode suivante peut être appelée de manière asynchrone, la bonne façon de l'utiliser devrait être de manière synchrone. Au moins lorsqu'une instance de Generator est utilisée dans une boucle for-of ou une déstructuration [...obj], next est appelé en continu.
En plus des problèmes synchrones et asynchrones de next, les paramètres de next posent également problème. Étant donné que les paramètres transmis lors de l'appel de next seront utilisés comme valeur de retour de l'opérateur de rendement, les générateurs disposent de moyens plus riches pour les utiliser. Au début de Python, le rendement était une instruction plutôt qu'un opérateur, donc une telle utilisation n'existait pas. Les versions ultérieures utilisaient le rendement comme opérateur, de sorte que divers pièges sont apparus.
Lors de l'utilisation d'une instance de générateur comme itérateur, next ne sera pas appelé de manière asynchrone et ne sera pas non plus transmis en paramètres. Je pense que c'est l'utilisation correcte de Generator. Ou pour le dire franchement, Generator est utilisé pour implémenter Iterator. Au moins, le nom Generator n’a pas d’autre signification. Voici un exemple d'utilisation :
Courez

<script>
var match = function * (pattern, string) {
 var regexp = new RegExp(pattern, 'g'); 
 for(let i; i = regexp.exec(string); yield i);
};

for(let i of match('a', 'abcabcabc')) {
 console.log(i);
}
</script>

Copier après la connexion

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal