Node.js将html作为variables返回

我正在使用Node.js设置一个Web刮板,并希望从一个URL获取一些HTML并将其保存为一个variables。 一个精简版本如下。

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到variables的html 。 据我所知,请求只允许我操作callback函数中的HTML或pipe道它的文件。 反正有没有把它作为variables返回?

request.get是asynchronous的,它将在callback函数中返回结果。

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

 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); }); 

有很多函数callback的代码看起来并不漂亮。 我更愿意承诺而不是callback。 如果你想使用promise,请尝试'request-promise'库。

看来, request.get是asynchronous的,所以你必须把return html; 在callback中。 否则,它会立即返回,request.get可以完成运行。