Node.js将html作为变量返回

时间:2016-06-13 23:11:32

标签: html node.js request

我正在使用Node.js设置网络抓取工具,并希望从网址中获取一些html并将其另存为变量。随后是一个精简版。

var request = require('request');
var get_html = function(){
    var url = "http://www.google.com";
    var html = '';
    request.get(url,function(error, response, body){
        html += body;
    });
    return html;
};
console.log(get_html());

似乎函数在请求之前返回可以将html连接到变量html。据我所知,请求只允许我操纵回调函数中的html或将其传递给文件。无论如何只是将它作为变量返回?

2 个答案:

答案 0 :(得分:1)

request.get是异步的,它将在回调函数中返回结果。

你需要像这样调整你的代码

var request = require('request');

// get_html receive callback to process result
var get_html = function(callback) {
    var url = "http://www.google.com";
    var html = '';
    request.get(url,function(error, response, body){
        return callback(body); // call callback and parse result to it
    });
};

// call get_html function
// and log html result here
get_html(function (body) { console.log(body); });

具有大量函数回调的代码看起来并不美观。 我更喜欢承诺而不是回调。 如果您希望使用promise,请尝试'request-promise'lib。

答案 1 :(得分:0)

request.get似乎是异步的,因此您必须将return html;放入回调中。否则它会在request.get完成运行之前立即返回。