2016-05-20 8 views
0

Dies ist irgendwie eine grundlegende Frage, aber es gibt wirklich weniger NodeJS Referenzen zur Verfügung. Warum funktioniert: die Zeile:NodeJS Http.get() Daten verketten

data += data 

und

data = data 

Aus dem Code unten los? Die erste erzeugt den doppelten Inhalt der Datei, die im options-Objekt zur Verfügung gestellt wird, während die zweite die seltsame Pufferausgabe erzeugt.

http.get(options, (response) => { 

    response.on("data", (data) => { 
     data += data; 
     console.log(data); 
    }); 

    response.on("error",() => { 
     console.log("An error has occured. Bummer."); 
    }); 
}); 
+1

Sie fügen 'data' zu' data'. Natürlich wird es den doppelten Inhalt ausgeben. – Shaffanhoon

Antwort

2

Der erste (data += data) anhängt data zu data, und wegen der += eine implizite Umwandlung von Buffer zu String getan wird, weil der, dass eine Zeichenkette als Ausgang für console.log(data); sehen.

Die zweite (data = data) weist data nur data zu, so dass es gar nichts tut. Aufgrund dass die Art der data nicht ändert und ist nach wie vor Buffer

Wenn Sie den Inhalt eines Puffers protokollieren wollen als String würden Sie buf.toString verwenden: console.log(data.toString())

0

In der ersten Zeile, die Sie Daten mit sich selbst sind verketten Es gibt also zweimal den Inhalt aus.

Sie wollen, so etwas zu tun:

var body = ""; 
request.on('data', function(chunk) { 
    body += chunk; // string conversion 
}).on('end', function() { 
    console.log(body); 
});