2016-10-13 5 views
-3

Ich habe ein Beispiel gefunden, um einen Server mit Express zu betreiben, aber ich verstehe nicht, warum es funktioniert.Selbstausführungsfunktion einer Variablen zugewiesen

Der Code ist der folgende:

var server = app.listen(3000, function() { 
    console.log('Listening on port 3000'); 
}); 

Das Ergebnis dieser var Zuordnung ist ein Prozess, an Port 3000 zu hören, aber ich bin die Zuordnung etwas nicht ausgeführt wird.

Was fehlt mir?

Prost, Giovanni

+2

Sie ordnen das Ergebnis von 'app.listen()' Ihrer Servervariablen zu, 'app.listen()' wird ausgeführt. – JanR

+2

In welchem ​​Sinne ist das "Selbstausführung"? – nnnnnn

+0

Sie die Ausführung der app.listen Befehl, der tut es majicks ist und gibt die Serverinstanz (ich glaube), die Sie mit –

Antwort

3

In Javascript app.listen() ist ein Methodenaufruf, der die listen() Methode auf dem app Objekt ausführt. Der Rückgabewert dieses Methodenaufrufs wird dann Ihrer Variablen server zugewiesen.

Also, alles zusammen mit Ihrem Code setzen:

var server = app.listen(3000, function() { 
    console.log('Listening on port 3000'); 
}); 

Die Abfolge der Ereignisse ist dies:

  1. eine neue Variable server im aktuellen Bereich namens erklären.
  2. aufrufen listen() Methode für das Objekt mit appapp.listen(...).
  3. Pass dieser Methode zwei Argumente, 3000 als Portnummer und eine Rückruffunktion, die aufgerufen wird, wenn die .listen() Verfahren beendet.
  4. beliebigen Wert die app.listen() Verfahren kehrt dann zu dem server Variablen zugewiesen wird.

Das Ergebnis dieser var Zuordnung ist ein Prozess, an Port 3000, hören, aber ich bin Zuweisung etwas nicht ausgeführt wird.

Eigentlich machst du beides. Sie rufen die Methode app.listen() auf und weisen dann das Rückgabeergebnis der Variablen server zu.

Die Phrase self executing nicht wirklich hier gelten. Die Paren nach app.listen() machen dies zu einem Funktionsaufruf, der die .listen() Methode auf dem app Objekt ausführt.

+0

Vielen Dank, ich war verwirrt von der listen() -Funktion und die anonyme Funktion (Rückruf) innerhalb listen(). Es macht jetzt völlig Sinn. –

0

app.listen ist eine Methode, die Argumente und gibt einen Gegenstand übernimmt. So etwas wie dieses

app.listen = function(time, handlerFunc) { 
    // do some stuff 
    return someObject; 
} 
+0

andere Dinge zu tun, dieser Code 'app.listen' Methode überschreibt - sicher nicht das, was –

+0

@JaromandaX I benötigt wird lieferte ein Pseudo-Code-Beispiel dafür, wie app.listen definiert werden könnte - das ist alles - und wundert sich, warum die Definition von dieser Methode funktioniert - das ist ein Beispiel. Seine Frage fragt nicht, wie man etwas tun soll. –

+0

Fair genug.Jetzt, wo ich es wieder lese, sehe ich, was Sie getan haben –

Verwandte Themen