Javascript菜鸟在这里。如果有大量重复的问题,我们深表歉意,因为这似乎是一个基本的 js 函数,但老实说,我找不到这个问题的答案。我正在尝试将 API GET 调用包装在一个函数中,但我遇到了我不理解的行为。有问题的代码:
我正在使用 node-rest-client 包来调用 mapquest 地理编码 API。我只对纬度/经度数据感兴趣。
var Client = require('node-rest-client').Client;
如果我像这样进行 GET 调用,我可以parsed
作为对象访问,这就是我想要的。
var address = 'New York'
var client = new Client();
var parsed;
client.get("http://www.mapquestapi.com/geocoding/v1/address?" +
'key=' + mapquestKeys.consumer_key +
'&location=' + address,
function(data, response) {
parsed = data.results[0].locations[0].latLng
}
);
// parsed == {lat, long}
但是,如果我将其包装在一个函数中:
function geocode(address){
var client = new Client();
var parsed;
client.get("http://www.mapquestapi.com/geocoding/v1/address?" +
'key=' + mapquestKeys.consumer_key +
'&location=' + address,
function(data, response) {
parsed = data.results[0].locations[0].latLng
}
);
return parsed
}
var address = 'New York'
parsed = geocode(address);
// parsed === undefined
parsed
似乎不受内部功能的影响;它是未定义的。我如何才能parsed
像第一个示例中那样作为包含我想要的数据的对象返回?这到底是怎么回事?