node.js warte auf die Antwort
Habe ich ein sehr begrenztes wissen über Knoten und nob-blocking IO, so verzeihen Sie mir, wenn meine Frage zu naiv.
Um wieder die notwendigen Informationen in Reaktion Körper, ich muss
- Rufen Sie 3rd-party-API
- Warten auf Antwort
- Einige änderungen und Rückkehr JSON-Antwort mit den Informationen, die ich bekam aus der API.
Meine Frage ist.. wie kann ich warte auf die Antwort? Oder ist es möglich, senden Sie die Informationen an den client nur, wenn ich erhielt Antwort von der API (soweit ich weiß, sollte die Verbindung bidirektional in diesem Fall, was bedeutet, dass ich nicht in der Lage sein zu tun, also mit HTTP).
Und noch eine andere Frage. Wenn eine Anforderung wartet auf Antwort von der API, das heisst, als andere Benutzer werden gezwungen sein, zu warten, zu (da Knoten ist " single-threaded), bis ich die Nummern der threads/Prozesse, die von 1 bis N?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie einen callback auf die Funktion, die Anrufe der service. Wenn der service eine Datenbank, zum Beispiel:
Und irgendwo anders im code:
Oder verwenden Sie anonyme Funktionen, also:
Zwischen dem Anruf und dem Rückruf, Knoten, Griffe, andere Kunden /verbindungen frei, "non-blocking".
Diese Art von situation ist genau das, was Knoten wurde entwickelt, um zu lösen. Nachdem Sie die Anfrage erhalten von Ihrem client, können Sie eine http-Anforderung, die eine callback-parameter. Dies wird Ihren Rückruf-Funktion, wenn die Anforderung abgeschlossen ist, aber die Knoten können andere arbeiten (einschließlich das dienen anderen Kunden), während Sie warten auf die Antwort. Sobald die Anforderung abgeschlossen ist, können Sie den code Rückgabe der Antwort an den client, die immer noch wartet.
Den Umfang von Speicher-und CPU-Nutzung von der node-Prozess zu erhöhen, als weiteren clients eine Verbindung zu ihm herstellen, aber nur ein Prozess, der erforderlich ist, um mit vielen gleichzeitigen clients.
Knoten konzentriert sich auf tun, die langsame I/O asynchron, so dass die Anwendung code kann einen task starten und dann code ausführen, auch nach der I/O abgeschlossen ist.
Ein typisches Beispiel mag das deutlich machen. Wir machen einen Aufruf an die FB-API. Wenn wir eine Antwort erhalten, wir ändern es und sendet dann JSON an den Benutzer.