你好,现在我知道 NodeJS 是异步的(老实说,我仍在努力了解这一点)。
我目前面临的问题是我试图执行 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);
这显然是在输出“undefined”;当返回“hi”或其中的任何内容时,我尝试返回 response.on('end') 而不是 NodeJS 输出有关该站点的信息。如果有人可以提供帮助,我们将不胜感激。
最佳答案
console.log(pCLatLng);
需要在 response.on('end'
回调内部(或在调用的东西内部)。值不是在触发该回调之前可用。
尝试这样的事情:
function postCodeCheck(callback) {
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 () {
callback(JSON.parse(data));
});
}).end();
}
postCodeCheck(function (pCLatLng)
{
console.log(pCLatLng);
});
关于javascript - NodeJS 返回 http.request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332856/