Im Lernknoten und durch ein paar Beispiele arbeiten, habe ich einen Prototyp, der perfekt im Test funktioniert, aber ich bin besorgt, dass es "aus Versehen" funktioniert.Lebensdauer der HTTP-Anfrage
Der Code, (stark abgespeckte) läuft auf die folgende
function CheckValue(){
var req=http.request({/*some options*/},
function (resp){
resp.on('data',
function (s){
/* process the response */
})});
/* Tweak a few headers here. */
req.end();
}
jetzt nach unten, wenn ich die Dokumente richtig verstehen - die Anfrage tatsächlich auf dem Server an dem Punkt der req.end()
und der Rückruf ist nicht gesendet verarbeitet, bis Daten empfangen werden.
Also; Wenn signifikant ist Verzögerung zwischen der Anfrage ausgegeben wird und die Antwort erhalten könnte das req
Objekt Müll gesammelt werden? Wenn ja, würde der Callback vermutlich nicht angerufen werden? Oder betrachten Sie es aus einem anderen Blickwinkel: verwaltet Knoten intern alle Verweise auf HTTP-Anforderungen, bis sie vollständig sind?
(Der Code wird in einem Feuer absichtlich geschrieben und Weise vergessen, mit req
intern innerhalb der Funktion und nicht gespeichert in jedem globalen Bereich scoped wird. Es wäre denkbar, die Anfrage in einem Array zu speichern und löscht die Anfrage während resp.on('end',...)
, aber ich würde lieber die Komplikation und Overhead vermeiden.)
können Sie einfach http://www.delay.me/ verwenden, um Ihren Gedanken zu überprüfen – viz