Wie kann ich einen Generator in einer JavaScript-Klasse schreiben?

9

Normalerweise schreibe ich Code wie folgt:

%Vor%

Aber wie kann ich einen Generator in und aus einer ES6-Klasse schreiben und benutzen? Ich habe es versucht:

%Vor%

Ich habe es auch versucht:

%Vor%

All diese zwei Methoden scheinen falsche Antworten zu sein. Wie kann ich also Generatorfunktionen in einer Klasse korrekt schreiben?

    
Seven 29.08.2016, 02:38
quelle

2 Antworten

12

Bearbeiten: Fügen Sie weitere Beispiele hinzu.
Ihre class -Definition ist (fast) korrekt. Der Fehler war in Instanziierung var Reply = new Reply(); . Dies versucht die dem Klassennamen zugewiesene Variable neu zu definieren. Außerdem wird erwartet, dass generator function yield etwas ist. Ich habe einen kleinen OP-Code ausgearbeitet, um ein funktionierendes Beispiel zu zeigen.

%Vor%
    
Alex Kudryashev 29.08.2016, 16:15
quelle
-3

Generatoren sind Funktionen mit einem .next() zum Abrufen der yield 'ed-Werte oder Sie können yield eine Generatorfunktion damit sie wissen, dass sie nicht warten muss, wenn sie auf eine yield -Anweisung trifft a .next , das aufgerufen werden soll ( reply.getReply().next(fn) )

Ihr zweiter Code ist fast richtig:

%Vor%

Bitte verwenden Sie als Erstes const oder let , wenn Sie in ES6 arbeiten, und verwenden Sie nur die Großbuchstabenvariante für Klassen. Sie versuchen, die Anweisung class Reply mit der Anweisung var Reply = zu überschreiben, was nicht möglich ist, da Identifier 'Reply' bereits deklariert ist.

Die Antwort, nach der Sie suchen, lautet wie folgt:
Genau wie Sie es im ersten Beispiel tun, sollten Sie yield die Generatorfunktionen verwenden, so könnte Ihr könnte wie folgt aussehen:

%Vor%     
CreasolDev 29.08.2016 07:58
quelle

Tags und Links