我是Node.js和Javascript的新手。我正在尝试构建一个简单的Web应用程序,该应用程序将向我显示我在Rest API中使用的一些数据中的属性列表。
显示基础数据并加载正在运行。但是,我现在正尝试从我获得的地理坐标中获取地址,并使用异步的API。它迫使我重新组织我的代码,但无法使其正常工作。
我的问题:我不知道如何使用回调geocoder.reverse()返回。
在线下,EnrichResponse返回之前,geocoder.reverse()完成(我猜是这样),我的结果最终从未填充到屏幕。
请您解决此问题吗?
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
var jsonDataUrl = '...';
Request.get(jsonDataUrl, postResponse);
}
});
function postResponse (error, response, body) {
if (error){
throw error;
}
var parseString = require('xml2js').parseString;
var data = parseString(body, {explicitArray: false}, EnrichResponse);
reply.view('index', { result: data });
}
function EnrichResponse(err, jsonData) {
var data = jsonData.recherche.annonces;
for (let i = 0; i < data.annonce.length; i++) {
data.annonce[i].squareMeterPrice = Math.floor(data.annonce[i].prix / data.annonce[i].surface);
data.annonce[i].address = geocoder.reverse({lat:data.annonce[i].latitude, lon:data.annonce[i].longitude}, GetFormattedAddress);
}
return data;
}
function GetFormattedAddress(err, res) {
if(res.length > 0){
return res[0].formattedAddress;
}
else {
return "";
}
}