我正在编写一个简单的应用程序,它从Google Maps Geocoding API中获取一些地理编码数据。我试图在async.each()(来自this package)函数中使用node-geocoder(this package)获取地址数组(字符串中)的数据:
async.each(entries, function(entry, callback) {
geocoder.geocode(entry.address, function(err, res) {
resultCheck.push(res);
var point = {
address: entry.address,
coordinates: {
latitude: res.latitude,
longtitude: res.longtitude
}
};
pointSet.points.push(point);
callback();
}, function(err) {
if(err) { errorArray.push(err); }
});
});
测试显示async函数处理数组的每个成员,但geocode函数什么也不做(resultCheck和errorArray在请求响应中广播)。
作为一个几乎完全的JavaScript菜鸟我也想问 - 这种方法是否接近正确?
任何见解都会受到欢迎,提前谢谢。
编辑:似乎async函数没有等待GM API的响应,我必须解决这个问题,如果我克服了这个问题就会发布。
答案 0 :(得分:0)
我可以在您的代码中看到一些问题,并遵循以下假设
代码应该是这样的,请注意geocode和async.each的签名
async.each(entries, function (entry, callback) {
geocoder.geocode(entry.address, function (result, status) {
resultCheck.push(result);
var point = {
address: entry.address,
coordinates: {
latitude: result.latitude,
longtitude: result.longtitude
}
};
pointSet.points.push(point);
callback();
});
}, function (err) {
if (err) {
errorArray.push(err);
}
});