节点路由功能什么都不做

时间:2015-07-24 08:34:44

标签: javascript node.js google-maps asynchronous

我正在编写一个简单的应用程序,它从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的响应,我必须解决这个问题,如果我克服了这个问题就会发布。

1 个答案:

答案 0 :(得分:0)

我可以在您的代码中看到一些问题,并遵循以下假设

  1. 您使用google maps api v3
  2. 并使用此async模块
  3. 代码应该是这样的,请注意geocodeasync.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);
        }
    });