这在某种程度上是一个基本问题,但实际上可用的nodeJS引用更少。为什么:行:
data += data
和
data = data
从下面的代码问题?第一个产生两倍于options对象中提供的文件的实际内容,而后者产生奇怪的缓冲输出。
http.get(options, (response) => {
response.on("data", (data) => {
data += data;
console.log(data);
});
response.on("error", () => {
console.log("An error has occured. Bummer.");
});
});
答案 0 :(得分:2)
第一个(data += data
)将data
追加到data
,并且由于+=
隐式转换为Buffer
到String
已完成,因为你看到一个字符串作为console.log(data);
的输出。
第二个(data = data
)只是将data
分配给data
,所以它什么都不做。因此,data
的类型不会更改,仍然是Buffer
如果您想将缓冲区的内容记录为字符串,请使用buf.toString:console.log(data.toString())
答案 1 :(得分:0)
在第一行中,您将数据与自身连接,因此它会输出两倍的内容。
你想做这样的事情:
var body = "";
request.on('data', function(chunk) {
body += chunk; // string conversion
}).on('end', function() {
console.log(body);
});