我正在尝试创建一个返回网页内容的函数,这是我到目前为止所拥有的
var get_contents = function() {
var httpRequestParams =
{
host: "google.com",
port: 80,
path: "/?"
};
var req = http.get(httpRequestParams, function(res)
{
var data = '';
res.on('data', function(chunk) {
data += chunk.toString();
});
//console.log(data);
}).end();
return req;
}
当我运行此代码时,我会在控制台日志记录打开时看到html内容,但是当我尝试返回输出时,它就永远无法正常工作。
我无法想办法在任何地方返回get_contents()
。在控制台上,它只是没有响应。
由于
答案 0 :(得分:5)
类似的东西:(别忘了处理错误和超时)
var on_contents = function(cb) {
var httpRequestParams =
{
host: "google.com",
port: 80,
path: "/?"
};
var req = http.get(httpRequestParams, function(res)
{
var data = '';
res.on('data', function(chunk) {
data += chunk.toString();
});
res.on('end', function(){
cb(data);
});
//console.log(data);
}).end();
}
function onFinish(data) {
console.log(data);
}
on_contents(onFinish)
答案 1 :(得分:2)
简短的回答是:您无法从该功能返回数据。 http.get
是异步的,因此在函数结束之前它实际上不会开始运行回调。您需要让get_contents
函数自行回调,检查http.get
处理程序是否已完成加载,如果是,请调用get_contents
回调。
答案 2 :(得分:1)
node.js中有一个很棒的模块[request][1]
。
var request = require('request'),
url = require('url');
var server = http.createServer(function (request, response) {
getPage("http://isohunt.com/torrents/?iht=-1&ihq=life+is+beautiful", function (body) {
console.log(body);
})
});
server.listen(3000);
上找到更多信息