转换node.js HTTP响应函数(使用" request" library)来使用流

时间:2015-09-20 11:36:07

标签: javascript node.js stream httprequest

我在node.js中使用request library,它会下载HTML正文响应,但会以块的形式进行。目前,我只是将它们连接到dataChunks变量并使用黑客攻击测试来查看它何时全部下载。但是,我已经浏览了Stream Handbook,这似乎是一种使用流来获取数据块的情况。我不完全理解我是如何做到这一点的,所以我将不胜感激。相关代码如下:

var dataChunks = "";

request.get({ url: baseUrl + path })
            .on("error", function(err) { throw new Error(err); })
            .on("response", function(res) {
                if (res.statusCode === 200) {
                    res.on("data", function(data) {
                        var dataString, dt;

                        dataChunks += (dataString = data.toString());

                        if ((dt = dataString.slice(-100).trimRight()).lastIndexOf("</html>") === dt.length - 7) {
                            // do stuff with dataChunks
                        }
                    });
                }
            });

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您不需要流。从请求自述:

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
 } 
})

流示例:

request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))