我是javascript和node.js的新手,我一直在努力解决这个范围问题。下面的代码生成一个简单的get请求,并将该网页的主体显示到控制台 - 没有问题。
function makeGETRequest(host, path, headers) {
var options = {
hostname: host,
port: 8000,
path: path,
method: 'GET',
headers: headers
};
var request = http.request(options, function(response) {
response.on('data', function(body) {
console.log('Body: ' + body);
});
});
request.end();
}
我似乎无法从http.request中声明的函数中获取任何信息。如果我想将body保存到我在makeGETRequest()中声明的变量然后返回它,那么它将是未定义的,因为它超出了范围。创建一个全局变量并使用它而不能解决问题。
离。
function makeGETRequest(host, path, headers) {
var siteBody;
var options = {
hostname: host,
port: 8000,
path: path,
method: 'GET',
headers: headers
};
var request = http.request(options, function(response) {
response.on('data', function(body) {
console.log('Body: ' + body);
siteBody = body; //works as long as I don't exit the scope of the function
});
});
request.end();
return body; //returns undefined
}
如何获取信息正文或其他函数,以便我可以使用makeGETrequest()中的信息然后将其返回?
答案 0 :(得分:0)
您需要详细了解asynchronous
Javascript函数以及如何解决它们。
在异步函数中,您无法将response
分配给变量并获取它。
相反,您需要使用promise
。