NodeJS Http.get()连接数据

时间:2016-05-20 13:47:31

标签: javascript node.js

这在某种程度上是一个基本问题,但实际上可用的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.");
    });
});

2 个答案:

答案 0 :(得分:2)

第一个(data += data)将data追加到data,并且由于+=隐式转换为BufferString已完成,因为你看到一个字符串作为console.log(data);的输出。

第二个(data = data)只是将data分配给data,所以它什么都不做。因此,data的类型不会更改,仍然是Buffer

如果您想将缓冲区的内容记录为字符串,请使用buf.toStringconsole.log(data.toString())

答案 1 :(得分:0)

在第一行中,您将数据与自身连接,因此它会输出两倍的内容。

你想做这样的事情:

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