Javascript NodeJS Http.get()连接数据

Javascript NodeJS Http.get()连接数据,javascript,node.js,Javascript,Node.js,这在某种程度上是一个基本问题,但实际可用的nodeJS参考文献很少。为什么:该行: data += data 及 从下面的代码中可以看出这一点吗?第一个生成选项对象中提供的文件的实际内容的两倍,而后一个生成奇怪的缓冲区输出 http.get(options, (response) => { response.on("data", (data) => { data += data; console.log(data); });

这在某种程度上是一个基本问题,但实际可用的nodeJS参考文献很少。为什么:该行:

data += data

从下面的代码中可以看出这一点吗?第一个生成选项对象中提供的文件的实际内容的两倍,而后一个生成奇怪的缓冲区输出

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

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

    response.on("error", () => {
        console.log("An error has occured. Bummer.");
    });
});
第一个(
data+=data
)将
data
附加到
data
,并且由于
+=
完成了从
Buffer
String
的隐式转换,因为您可以看到一个字符串作为
console.log(data)的输出

第二个(
data=data
)只将
data
分配给
data
,因此它什么也不做。因此,
数据
的类型不会改变,仍然是
缓冲区

如果要将缓冲区的内容记录为字符串,可以使用:
console.log(data.toString())
第一个(
data+=data
)将
data
附加到
data
,并且由于
+=/code>缓冲区
string
的隐式转换已经完成,因此,您将看到一个字符串作为
console.log(数据)的输出

第二个(
data=data
)只将
data
分配给
data
,因此它什么也不做。因此,
数据
的类型不会改变,仍然是
缓冲区


如果要将缓冲区的内容记录为字符串,可以使用:
console.log(data.toString())

在第一行中,将数据与自身连接起来,以便它输出两倍的内容

您希望执行以下操作:

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

在第一行中,您将数据与自身连接起来,以便它输出两倍的内容

您希望执行以下操作:

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

您正在将
数据
添加到
数据
。当然,它将输出两倍的内容。您正在将
数据添加到
数据中。当然,它将输出两倍的内容。