Ich habe ein sehr begrenztes Wissen über Knoten und Nob-Blocking IO also verzeih mir, wenn meine Frage zu naiv ist.
Um benötigte Informationen im Antworttext zurückzugeben, muss ich
Meine Frage ist ... wie kann ich auf eine Antwort warten? Oder ist es möglich, die Informationen nur dann an den Client zu senden, wenn ich eine Antwort von der API erhalten habe (soweit ich weiß, sollte die Verbindung in diesem Fall bidirektional sein, was bedeutet, dass ich dies nicht über HTTP tun kann).
>Und noch eine Frage. Wenn eine Anfrage auf eine Antwort von der API wartet, bedeutet dies, dass andere Benutzer gezwungen sind, ebenfalls zu warten (da der Knoten single-threaded ist), bis die Anzahl der Threads / Prozesse von 1 auf N ansteigt?
Sie übergeben einen Rückruf an die Funktion, die den Dienst aufruft. Wenn der Service eine Datenbank ist, zum Beispiel:
%Vor%Und woanders im Code:
%Vor%Oder Sie können anonyme Funktionen verwenden, also:
%Vor%Zwischen dem Aufruf und dem Rückruf behandelt der Knoten andere Clients / Verbindungen frei, "nicht blockierend".
Diese Art von Situation ist genau das, was der Knoten lösen sollte. Sobald Sie die Anfrage von Ihrem Client erhalten haben, können Sie eine http-Anfrage machen, die einen Callback-Parameter benötigt. Dies ruft Ihre Callback-Funktion auf, wenn die Anfrage erledigt ist, aber der Knoten kann andere Arbeiten ausführen (einschließlich der Bedienung anderer Clients), während Sie auf die Antwort warten. Sobald die Anfrage abgeschlossen ist, können Sie mit dem Code die Antwort an den noch wartenden Client senden.
Die Menge an Arbeitsspeicher und CPU, die vom Knotenprozess verwendet wird, nimmt zu, wenn weitere Clients eine Verbindung mit ihm herstellen, aber nur ein Prozess ist erforderlich, um viele gleichzeitige Clients zu verarbeiten.
Der Knoten konzentriert sich darauf, langsame E / As asynchron auszuführen, so dass der Anwendungscode eine Task starten kann und dann die Codeausführung nach Abschluss der E / A erneut startet.
Tags und Links node.js