Heim > Web-Frontend > js-Tutorial > Verständnis der Rückruffunktion (Callback) in Javascript_Javascript-Kenntnissen

Verständnis der Rückruffunktion (Callback) in Javascript_Javascript-Kenntnissen

WBOY
Freigeben: 2016-05-16 16:37:55
Original
1244 Leute haben es durchsucht

Ich habe kürzlich Express gesehen und überall die Verwendung von Rückruffunktionen gesehen, die Funktionen als Parameter übernehmen. Wenn Sie dieses Konzept nicht verstehen, wird der Code von NodeJS und Express ein Chaos sein. Zum Beispiel:

Code kopieren Der Code lautet wie folgt:

app.use(function(req, res, next) {
var err = neuer Fehler('Nicht gefunden');
err.status = 404;
next(err);
});

app ist ein Objekt, use ist eine Methode, der Parameter der Methode ist eine anonyme Funktion mit Parametern und der Funktionskörper wird direkt am Ende angegeben. Wie ist dieser Code zu verstehen? Lassen Sie uns zunächst das Konzept der Rückruffunktion verstehen.
Zunächst müssen Sie verstehen, dass Funktionen in js auch Objekte sind, die Variablen zugewiesen und als Parameter in der Parameterliste der Funktion platziert werden können. Zum Beispiel:
Code kopieren Der Code lautet wie folgt:

var doSomething = function(a,b)
{
return a b;
}

Die Bedeutung dieses Codes besteht darin, eine anonyme Funktion zu definieren. Abgesehen davon, dass diese anonyme Funktion keinen Namen hat, unterscheidet sie sich nicht von einer gewöhnlichen Funktion. Weisen Sie dann die anonyme Funktion der Variablen doSomething zu. Als nächstes rufen wir auf:
Code kopieren Der Code lautet wie folgt:

console.log(doSomething(2,3));

Dadurch wird 5 ausgegeben.

Die Rückruffunktion wird in die Parameterliste einer anderen Funktion (z. B. einer übergeordneten Funktion) eingefügt, als Parameter an diese übergeordnete Funktion übergeben und dann irgendwo im übergeordneten Funktionskörper ausgeführt. Es ist abstrakt, schauen wir uns ein Beispiel an:

Code kopieren Der Code lautet wie folgt:

// Um ​​das Konzept des Rückrufs zu veranschaulichen
var doit = ​​​​function(callback)
{
var a = 1,
         b = 2,
c = 3;
var t = callback(a,b,c);
Rückgabe t 10;
};
var d = doit(function(x,y,z){
Rückgabe (x y z);
});
console.log(d);

Definieren Sie zunächst die Doit-Funktion, die über einen Parameter-Callback verfügt. Dieser Rückruf ist die Rückruffunktion und der Name kann beliebig sein. Betrachten Sie den Funktionskörper und definieren Sie zunächst drei Variablen a, b und c. Rufen Sie dann die Callback-Funktion auf. Gibt schließlich einen Wert zurück.

Die Doit-Funktion wird unten aufgerufen. Es ist zu beachten, dass bei der Definition von doit gerade kein Rückruf definiert war, sodass ich nicht wusste, wofür der Rückruf verwendet wurde. Dies ist eigentlich leicht zu verstehen. Wenn wir eine Funktion definieren, wird dem Parameter nur ein Name zugewiesen, z. B. a, und a wird im Funktionskörper verwendet, aber der gesamte Prozess weiß nicht, was a ist Funktion Geben Sie dann nur den spezifischen Wert von a an, z. B. 2. Rückblickend müssen wir beim Aufruf von doit angeben, was ein Rückruf ist. Wie Sie sehen, vervollständigt diese Funktion eine Summenfunktion.

Der Ausführungsprozess des obigen Codes ist:

Rufen Sie die Funktion doit auf. Der Parameter ist eine anonyme Funktion. Geben Sie den Funktionskörper von doit ein, definieren Sie zuerst a, b, c und führen Sie dann gerade die anonyme Funktion aus. Die Parameter sind a, b, c und return a t und schließlich return A t 10 ergibt d.

Zurück zum ursprünglichen Beispiel: app.use(...) ist ein Funktionsaufruf. Wir können uns vorstellen, dass eine Verwendungsmethode zuvor definiert worden sein muss, aber sie wird hier nicht angegeben. Wenn Sie diese beiden Beispiele vergleichen, können Sie es sofort verstehen.

Bei der Verwendung von NodeJS und Express ist es für uns unmöglich, die Funktionsdefinition jeder Methode oder Funktion zu finden und einen Blick darauf zu werfen. Sie müssen also wissen, welche Parameter in dieser Definition an den Rückruf übergeben werden. Wenn wir dann eine Methode oder Funktion aufrufen, definieren wir selbst anonyme Funktionen in den Parametern, um bestimmte Funktionen abzuschließen.

Vorbei!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage