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?
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.
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:
Tags und Links javascript ecmascript-6