嗨,现在我知道NodeJS是异步的(我仍然试图让我的头说实话)。NodeJS返回http.request
我目前面临的问题是我试图做一个http.request
来接收一些JSON数据。这很好,但我需要的是将此数据返回给变量。我相信我需要做一个回调函数? (从我对此事读了)
,我目前拥有的代码:
var http = require('http');
pCLatLng = '';
function postCodeCheck() {
var pCode = {
host: 'geo.jamiethompson.co.uk',
path: "/" + 'SW1A2AA' + ".json"
};
http.request(pCode).on('response', function(response) {
var data = '';
response.on("data", function (chunk) {
data += chunk;
});
response.on('end', function() {
pCJSON = JSON.parse(data);
pCLatLng = pCJSON;
});
}).end();
}
console.log(pCLatLng);
这显然是输出“不确定”;我已经尝试在返回“hi”或其中的任何内容时返回response.on('end'),而不是NodeJS输出有关该站点的信息。如果任何人都可以帮助这一点,将不胜感激。
这实际上不会创建一个变量,但它会吗? console.log(pCLatLng)我只是用来测试,但使用你的代码试图返回数据到一个变量,如'var x = postCodeCheck(function(pCLatLng){console.log(pCLatLng);})';然后到console.log(x);它仍然没有定义? – 2012-02-17 18:28:24
因为你还没有掌握异步代码。 ''postCodeCheck'函数不返回任何东西,所以''x''肯定会是''undefined''。 postCodeCheck函数传递一个函数(回调函数),一旦该值可用,该函数就会被执行。您*无法*获得该回调范围之外的值。 – 2012-02-17 18:59:43
我看到我不认为我想要做的事很有可能。我想要做的是创建一个带有邮政编码/地址的NodeJS模块;并返回LatLng,但它需要先去一个变量,以便为下一步我要做的事情发射另一个函数。 (将不得不重新考虑那一个,然后感谢您的帮助)。 – 2012-02-17 19:51:08