jquery - 从函数内部的函数返回值

标签 jquery jquery-plugins return-value return nested-function

我正在使用 goMap 并尝试在其中添加一个函数,但在调用该函数时无法让它返回。如果我在函数内使用 alert(),它会返回我需要的值。

getAddress: function(latlngcoords)
{
    var goMap = this;
    var input = latlngcoords;
    var latlngStr = input.split(",", 2);
    var lat = parseFloat(latlngStr[0]);
    var lng = parseFloat(latlngStr[1]);
    var latlng = new google.maps.LatLng(lat, lng);
    var address;

    geocoder.geocode({'latLng': latlng}, function(results, status) 
    {
        if(status == google.maps.GeocoderStatus.OK) 
        {
            if(results) 
            {   
                address = results;
                //alert(address); <-- works but
            }
        }
    });

    return address; // won't return at all?
},

它是通过执行以下操作来调用的:$.goMap.getAddress(),但参数中包含纬度和经度。我需要它通过返回地址返回值,但它根本不会返回任何内容。

我怎样才能让它返回值?

最佳答案

geocode 是一个异步函数。当您调用它时,它就会启动,但仅此而已。 (这就是它接受回调的原因。)因此,您的 getAddress 函数在回调设置 address 之前返回。

您需要让您的 getAddress 函数也接受回调,并以这种方式返回结果,例如

getAddress: function(latlngcoords, callback)
                                // ^--- callback parameter
{
    var goMap = this;
    var input = latlngcoords;
    var latlngStr = input.split(",", 2);
    var lat = parseFloat(latlngStr[0]);
    var lng = parseFloat(latlngStr[1]);
    var latlng = new google.maps.LatLng(lat, lng);
    var address;

    geocoder.geocode({'latLng': latlng}, function(results, status) 
    {
        if(status == google.maps.GeocoderStatus.OK) 
        {
            if(results) 
            {   
                address = results;
                callback(address);
            //  ^--- call it with the result
            }
        }
    });
},

当然,这意味着调用 getAddress 的代码必须处理 getAddress 也是异步的这一事实。

关于jquery - 从函数内部的函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596026/

相关文章:

javascript - 动态添加元素,可拖动可排序

XUL 的 jQuery?

javascript - jquery tablesorter filter - 如何计算过滤后的行数

C:何时按值返回或传递引用

java - 三元运算符在打印时给出意想不到的结果

javascript - 在页面加载时触发列表项

c# - WPF 工具提示 : Is there any option to Click on a Button that is inside tooltip (code and picture attached)

javascript - 如何在浏览器调整大小时重新加载 Javascript? BX slider 轮播

javascript - 想要改变多个 div 的颜色几秒钟,但仅限于最近加载的

javascript - 函数将数组返回到另一个函数>未捕获的类型错误