在javascript中使用回调返回

时间:2017-12-10 22:06:37

标签: javascript node.js callback

我是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 "";
    }                      
}

0 个答案:

没有答案