javascript - Javascript 函数的返回值

标签 javascript jquery google-maps

我卡在了一些可能非常简单的事情上。

我可以通过 console.log 记录 codeAddress 函数的返回值,但无法让它返回到另一个调用它的函数。有问题的两行带有注释。

请不要介意我糟糕的 XX 连接;我只是想弄清楚函数调用。

如有任何帮助,我们将不胜感激。谢谢!

function codeAddress(zipCode) {
    geocoder.geocode( { 'address': zipCode}, function(results, status) {
       var lat = results[0].geometry.location.d;
       var lng = results[0].geometry.location.e;
       var latlng = lat+'XX'+lng;
       return latlng;    // I can console log this value
     });
  }

var citymap = {};
function loadMap() {
  $.ajax({                                      
        url: 'getdata.php',
        data: "query=geolocate",
        dataType: 'json',
        success: function (zips) {
            for (var i in zips)
            {
                var entry = zips[i];
                citymap[entry['zip_code']]= {
                    scans: entry['num_scans'],
                    position: codeAddress(entry['zip_code'])  // But it will never return down here
                };
            } 
        } 
});
}

最佳答案

对于异步函数,你需要提供一个回调函数,而不是期待一个返回值。您应该像这样调用“codeAddress”函数:

var entry = zips[i];
var citymapForZip = {
    scans: entry['num_scans'],
};
var zipCode = entry['zip_code'];
citymap[zipCode] = citymapForZip;
codeAddress(zipCode, getCallbackFunction(citymapForZip));

我使用了辅助函数“getCallbackFunction”,它应该为给定的城市 map 生成回调函数。回调将简单地获取地理编码结果,并设置城市 map 的“位置”属性。像这样:

function getCallbackFunction(citymap) {
    return function(result) {
        citymap.position: result; 
    };
}

最后,您的 codeAddress 函数应该将其传递给回调,而不是返回“latlng”:

function codeAddress(zipCode, callback) {
    geocoder.geocode( { 'address': zipCode}, function(results, status) {
       var lat = results[0].geometry.location.d;
       var lng = results[0].geometry.location.e;
       var latlng = lat+'XX'+lng;
       callback(latlng);
     });
  }

关于javascript - Javascript 函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638082/

相关文章:

java - 在 Java EE 框架中使用 Mysql 的 Google map

javascript - 在正则表达式模式方面需要帮助

javascript - 如何将字符串(是否有前导零)转换为整数?

JavaScript 数组点击

javascript - 将 Onclick 函数转移到 jQuery

css - 谷歌地图自动完成,修复输入

javascript - 从 JSON 对象中删除键值对

javascript - 来自 JSON 的每个元素的动态 CSS

javascript - 在 div 悬停时显示 chop 的文本

javascript - 谷歌地图API gm_bindings_未定义